国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

網頁Web上調用本地應用程序(.exe)

2019-11-08 19:48:23
字體:
來源:轉載
供稿:網友


        一、web調用本地應用程序的思路

        這個方法主要思路是利用自定義URL PRotocol來調用應用程序。瀏覽器在解析到自定義URL Protocol之后,會尋找注冊表,然后通過注冊表啟動相應的程序,然后啟動改程序,傳入參數。這樣就可以在WEB頁面調到你的程序了。比如在瀏覽器地址欄輸入“tencent://message/?uin=88888888&Site=JooIT.com&Menu=yes”就會出現一個QQ對話框。

        1、先往注冊表寫信息。如下:

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT/Diff]"URL Protocol"="這里是小程序的安裝路徑"@="DiffProtocol"[HKEY_CLASSES_ROOT/Diff/DefaultIcon]@="這里是小程序的安裝路徑,1"[HKEY_CLASSES_ROOT/Diff/shell][HKEY_CLASSES_ROOT/Diff/shell/open][HKEY_CLASSES_ROOT/Diff/shell/open/command]@="/"這里是小程序的安裝路徑/" /"%1/""

將上面的內容保存為.reg文件運行即可。

2、web頁面調用。在網頁直接一個超鏈接,協議://參數就可以了。比如

<a href=" Diff://">   alt="點擊這里">   </a>

 

<a href=" Diff://hello">SIMU</a>

    需要指出的是:在上面例子中注冊表中代碼【@="/"這里是小程序的安裝路徑/" /"%1/""】中的%1表示傳入參數,就是對應這此處的Diff://hello,解析之后就可以得到參數hello了。

 

二、完整實例。

1、xxxClient.reg文件

 

Windows RegistryEditor Version 5.00 [HKEY_CLASSES_ROOT/xxxClient]@="xxxClientProtocol""URLProtocol"="" [HKEY_CLASSES_ROOT/xxxClient/DefaultIcon]@="C:// xxx_Client//client.bat,1" [HKEY_CLASSES_ROOT/xxxClient/shell] [HKEY_CLASSES_ROOT/xxxClient/shell/open] [HKEY_CLASSES_ROOT/xxxClient/shell/open/command]@="/"C://xxx_Client//client.bat/" /"%1/""

2、client.bat文件

@echo off rem設置當前目錄為C:/ xxx _Client/setcurrent_dir=C:/ xxx _Client/  pushd%current_dir%  call C:/ xxx _Client/xxx _Client.exe

3、web頁面文件

<!DOCTYPEHTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"> <head>     <meta http-equiv="Content-Type"content="text/html; charset=utf-8" /> </head>   <body>       <div>           <a href="xxxClient://">          打開客戶端軟件           </a>       </div>   </body></html>

三、注意問題:

1、如何動態生成注冊表信息,可以在應用程序中寫代碼操作注冊表,寫入上面的URL Protocol注冊表格式信息。

2、路徑問題,如果應用程序包含了很多文件,就涉及到工作路徑問題,web調用應用程序,當時的工作路徑是的web運行的工作路徑??梢酝ㄟ^bat或應用程序來切換路徑。

以bat為例,建立一個批處理文件,里面切換路徑,注冊注冊表信息時,[HKEY_CLASSES_ROOT/Diff/shell/open/command]使用bat路徑。

xxxClient.bat文件

@echo off

rem設置當前目錄為C:/ xxx_Client/

setcurrent_dir=C:/ xxx_Client/ 

pushd%current_dir% 

call C:/ xxx_Client/xxx_Client.exe

3、如何獲取參數?

MFC Dialog程序的參數值:

首先需要獲取傳入的參數,在控制臺程序中我們都知道main()函數的參數argv里帶入了傳入的參數,而在MFC程序中則需要在InitInstance()中進行命令行參數解析。

    CCommandLineInfo   cmdInfo;       ParseCommandLine(cmdInfo);

     為了給對話框傳入待顯示的參數,加入了一個SetDisplayInfo方法。

    CHelloWorldDlg dlg;    dlg.SetDisplayInfo(cmdInfo.m_strFileName);//設置待顯示的信息

 

void CHelloWorldDlg::SetDisplayInfo(CString& strInfo){    this->m_strInfo = strInfo;}

 最后在OnInitDialog函數中進行參數解析

    //解析傳入的完整地址,e.g "helloworld://hello world/"    int pos = m_strInfo.Find("//");//找到分隔符    m_strInfo = m_strInfo.Mid(pos+2);//取到傳入的參數    m_strInfo.Delete(m_strInfo.GetLength()-1);//去掉最后的'/'    m_edit_info.SetWindowText(m_strInfo);

 

代碼實例

參考資料:

1, Registering an application to a URL Protocol

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 察哈| 东乌| 长武县| 洪洞县| 阳朔县| 镇雄县| 新和县| 中宁县| 山东| 巴彦淖尔市| 璧山县| 绥德县| 锦州市| 潍坊市| 临安市| 光山县| 晋江市| 嫩江县| 金乡县| 威信县| 和龙市| 文安县| 雷山县| 新乡市| 平泉县| 邛崃市| 天祝| 河池市| 泰来县| 德江县| 孝义市| 胶南市| 麻城市| 剑河县| 电白县| 改则县| 稻城县| 舟山市| 天长市| 衡山县| 锡林郭勒盟|