整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          html(網(wǎng)頁)運行本地程序(exe文件)的方法與源碼

          信大家在使用一些軟件的時候會發(fā)現(xiàn),只要點擊了它們的一些網(wǎng)頁廣告就會運行一些推廣軟件或者是官方軟件。它們是怎么實現(xiàn)的呢?其實方法很簡單,聽來群網(wǎng)慢慢道來。

          下面鏈接是微軟MSDN上的說明,為了大家易懂,所以在這里分享給大家:http://msdn.microsoft.com/en-us/library/aa767914%28v=vs.85%29.aspx

          當(dāng)然,或許還有更復(fù)雜的方法,小編只舉一個簡單的例子。

          此方法分兩部份:1. 注冊表代碼部份; 2. HTML代碼部份

          1.注冊表代碼:

          Windows Registry Editor Version 5.00
          [HKEY_CLASSES_ROOT\laiqun]
          @="laiqun Protocol"
          "URL Protocol"=""
          [HKEY_CLASSES_ROOT\laiqun\DefaultIcon]
          @="C:\\WINDOWS\\NOTEPAD.EXE"
          [HKEY_CLASSES_ROOT\>laiqun\shell]
          @=""
          [HKEY_CLASSES_ROOT\laiqun\shell\open]
          @=""
          [HKEY_CLASSES_ROOT\laiqun\shell\open\command]
          @="\"C:\\WINDOWS\\NOTEPAD.EXE\" "
          

          注釋:laiqun代表鏈接前綴如:[laiqun://], 可修改為您想要的前綴。

          C:\WINDOWS\NOTEPAD.EXE\ 代表需要執(zhí)行EXE的路徑(可執(zhí)行文件),可替換您想運行的程序。

          修改完后保存,將TXT文件重命名為【文件名.Reg】然后運行就加入注冊表中(如下圖)

          注冊表代碼

          2.html代碼:

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          </head>
          <body>
          <div>
          <a href="laiqun://">此處文字按需修改</a>
          </a>
          </div>
          </body>
          </html>
          

          把上面的html代碼復(fù)制到notepad++,修改完成后點擊保存,然后把TXT后綴修改成html即可(如下圖)。

          HTML代碼

          打開html文件點擊里面的鏈接就能直接打開筆記本,我里面路徑寫的是記事本程序的路徑,所以點擊的時候是打開記事本,這個文件路徑可以在注冊表程序中修改。

          注意:編輯代碼建議使用 notepad++等專業(yè)文本編輯器,不建議使用電腦自帶的記事本。

          好了,關(guān)于 html(網(wǎng)頁)運行本地程序(exe文件)的方法與源碼 的教程就到這里,謝謝大家支持。

          如果大家有什么不明白的地方,可以在下方評論、留言。

          時,我們希望實現(xiàn)這樣一個特性:單擊HTML頁面上的鏈接將調(diào)用本地可執(zhí)行文件。像騰訊QQ、迅雷這類。

          實現(xiàn)此功能也非常簡單,這需要我們添加和修改注冊表來實現(xiàn)自定義URL協(xié)議協(xié)議。

          自定義URL Protocol 協(xié)議

          一些應(yīng)用軟件可以在瀏覽器中點擊一個url后自動啟動,并執(zhí)行操作。

          1. win+r打開注冊表,輸入regedit進(jìn)入注冊表

          2. 在注冊表 左邊最上面HKEY_CLASSES_ROOT那個樹右鍵新建——項。該項的名稱自己命名,其實該名稱也是協(xié)議的名稱,我們調(diào)用的時候就是根據(jù)該協(xié)議調(diào)用的,而我這里隨便起了一個:ZZO。

          3. 然后在該項中右鍵->新建->字符串值,創(chuàng)建一個URL Protocol的值,其中數(shù)據(jù)默認(rèn)為空。

          4. 然后在ZZO下新建->項,名字為DefaultIcon

          5. 在ZZO下新建->項,名稱為shell。并在shell下新建名為open的項。然后在open下新建名為command的項

          6. 然后分別修改DefaultIcon 和 command 的值為要調(diào)用的程序完整路徑.

          比如我這里要調(diào)用的是QQ,完整路徑為:D:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe

          7. 然后我們在html頁面添加一個a標(biāo)簽

          <a href="Zzo://">open</a>

          8. 點擊頁面按鈕

          通過網(wǎng)站調(diào)用可執(zhí)行程序,主要是修改注冊表,注冊 URL Protocol 協(xié)議。

          注意上面 command 項的值可以為 C:\Program Files (x86)\Qiaoker\updater.exe "%1" ,這個"%1"是傳遞給 updater.exe的參數(shù)。

          加了后使用是我們就可以傳參數(shù)了,

          <a href="Uaiqiy://cid:110&username:mjq">

          方式二:使用js調(diào)起客戶端

          除了上面那種方式,我們還可以通過調(diào)用js函數(shù)實現(xiàn)客戶端exe程序的調(diào)用,但是這種方式局限性很大,目前只支持IE瀏覽器。

          代碼如下:

          function execProgram() {

          var exepath = "D:\Program Files (x86)\Tencent\QQMusic\QQMusic.exe"

          var ws = new ActiveXObject("WScript.Shell");

          ws.Exec(exepath);

          }

          在做web應(yīng)用的時候,我們經(jīng)常會遇到在web中調(diào)用本地應(yīng)用程序的問題,例如在web中點擊一個按鈕,然后打開自己寫的或者別人的應(yīng)用程序。上網(wǎng)比較留意的同學(xué)應(yīng)該會發(fā)現(xiàn),想qq客服,淘寶的阿里旺旺客服都會有這樣的效果。

          其中qq的聊天按鈕已經(jīng)開源,你也可以寫到自己的網(wǎng)頁中,詳見http://wp.qq.com/index.html。

          下面我主要介紹一種現(xiàn)在主流的處理方法,這種方法在網(wǎng)上的其他地方也有,但是都是轉(zhuǎn)來轉(zhuǎn)去,而且寫得不詳細(xì),對于初學(xué)者來說,很難看懂,并仿照著處理。所以這篇文章不算原創(chuàng),只能說是對網(wǎng)上的文章進(jìn)行詳細(xì)說明,便于大家使用和仿照。

          自己在做《電能計量仿真實訓(xùn)系統(tǒng)》中,需要在B/S系統(tǒng)中調(diào)用C/S仿真系統(tǒng),并傳入幾個參數(shù),嘗試著用js調(diào)用activeObject來處理,但是這個涉及到安全性的問題,而且只能在ie下才能實現(xiàn)。

          備注:這個項目是用Java完成的,包括c/s部分也是用Java swing做的,所以我遇到的問題是在web上調(diào)用java打包之后jar應(yīng)用程序,難度比web調(diào)用exe多了一步工作。

          這個方法主要思路是利用自定義URL Protocol來調(diào)用應(yīng)用程序。瀏覽器在解析到自定義URL Protocol之后,會尋找注冊表,然后通過注冊表啟動相應(yīng)的程序,然后啟動改程序,傳入?yún)?shù)。對于我這個項目而言,主要思路是利用這個自定義URL Protocol的方法,打開一個c#的應(yīng)用程序,在這個程序中再調(diào)用系統(tǒng)命令,打開jar應(yīng)用程序,并傳入?yún)?shù)。主要實現(xiàn)步驟如下:

          1.添加自定義URL Protocol

          [plain] view plain copy

          1. Windows Registry Editor Version 5.00
          2. [HKEY_CLASSES_ROOT\Simu]
          3. "URL Protocol"="x:\simu\Simulink.exe"
          4. @="SimuProtocol"
          5. [HKEY_CLASSES_ROOT\Simu\DefaultIcon]
          6. @="x:\simu\Simulink.exe,1"
          7. [HKEY_CLASSES_ROOT\Simu\shell]
          8. [HKEY_CLASSES_ROOT\Simu\shell\open]
          9. [HKEY_CLASSES_ROOT\Simu\shell\open\command]
          10. @="\"x:\simu\Simulink.exe\" \"%1\""

          在#內(nèi)的為自定義URL Protocol的注冊表信息,我對每一行說明一下:第一行是注冊表工具的版本信息,可以自己改一改,或者自己導(dǎo)入任意一個注冊信息,把這一行復(fù)制過來就行了;第二行中的Simu就是在HKEY_CLASSES_ROOT下面添加一個Simu樹,其中Simu的名稱就對應(yīng)著自定義URL Protocol的名稱,在web中調(diào)用的時候需要這個名稱;第三行中的"x:\simu\Simulink.exe"是指定應(yīng)用程序的路徑,注意只能是exe的程序;第四行是協(xié)議的名稱,可以是任意字符串,后面不會用到;第五行表示在Simu中再加一個分支,照抄,不用管;第六行中的x:\simu\Simulink.exe也是對應(yīng)的程序路徑,后面的1照抄;第七行同第五行;第八行同第五行;第九行同第五行;第十行也是將路徑換成自己的程序路徑即可,其中%1表示到參數(shù),參數(shù)可以在你的程序simulink.exe中解析得到。分析畢。

          將#之間的內(nèi)容復(fù)制到一個txt文檔中,修改后綴名為.reg,雙擊該文件即可直接導(dǎo)入到注冊表中。如下圖:

          2.編寫C#程序(simulink.exe)調(diào)用Jar應(yīng)用程序

          simulink.exe程序就是上述注冊表中指定的程序,即web上點擊按鈕之后,啟動的程序。

          考慮到程序配置的簡易和后期維護(hù)的方便,將jar程序的路徑放到環(huán)境變量中,key對應(yīng)為EMES_Simu,value對應(yīng)為simulink.jar程序的絕對路徑。

          由此可得,對于simulink.exe的主要任務(wù)就是:

          main(string[] args) {

          /**程序流程如下:

          *第一步:分析windows系統(tǒng)中的環(huán)境變量,得到環(huán)境變量為EMES_Simu的值(這個值是windows系統(tǒng)中Simulink.jar文件的絕對路徑)。設(shè)為String pathValue;

          *第二步:構(gòu)造調(diào)用simulink.jar文件的系統(tǒng)命令。大致結(jié)構(gòu)是:String cmdString,=“java -jar”+ pathValue + args[0] + " " + args[1] + " " args[2] + " " args[3] + " " args[4] + " " args[5];

          *第三步:調(diào)用系統(tǒng)命令cmdString,執(zhí)行Java應(yīng)用程序,本程序主界面隱藏或者退出(只要不影響java應(yīng)用程序的運行即可,并且java程序退出之后c#程序必須要退出)

          **/

          }

          大家可能會思考這些功能用C語言即可完成,何必用c#的gui程序,這是因為c語言的控制臺程序運行系統(tǒng)命令之后,控制臺的黑屏?xí)恢北A簦词鼓阆氡M辦法讓它最小化,隱藏或者退出,在啟動的時候也會有一個黑屏一閃而過,極不美觀,使用c#的gui程序,讓程序的界面一直隱藏而不顯示,就不會有這種一閃而過的感覺了。(當(dāng)然你也可以用其他的語言或者其他方法處理了,這一點不限制)

          3.在web中調(diào)用自定義協(xié)議啟動程序

          調(diào)用協(xié)議很簡單,就是一個鏈接即可,如下所示:

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

          需要指出的是:在標(biāo)題1中的第10行注冊表中代碼中的%1表示傳入?yún)?shù),就是對應(yīng)這此處的Simu://hello,解析之后就可以得到參數(shù)hello了。

          效果如下圖所示:

          (1)web頁面

          (2)點擊之后

          (3)點擊啟動程序

          圖中可以看到后面的黑屏就是c程序調(diào)用系統(tǒng)命令的界面,登陸界面就是自己的java swing程序。調(diào)用成功!

          4.還存在的問題

          (1)路徑問題

          利用這種方法,還存在一個問題,這個問題在標(biāo)題3(3)中的圖片就可以看到,在后面的黑屏中有報錯,這是因為路徑問題造成的。在程序中,引用資源等都習(xí)慣使用相對路徑,在web中調(diào)用c#程序之后,c#中的相對路徑就是瀏覽器所在的路徑,在c#中調(diào)用系統(tǒng)命令之后,在java程序中的相對路徑就是c#程序的路徑了!

          對于這個問題的解決方法:(a)使用絕對路徑,所謂絕對路徑簡單的說就是帶盤符的路徑。(b)解析路徑,在生成的相對路徑中解析出程序真正需要的路徑。


          主站蜘蛛池模板: 夜夜精品无码一区二区三区| 国产在线一区二区| 天堂va视频一区二区| 国产一区在线视频| 国产视频一区在线播放| 久久国产午夜一区二区福利| 亚洲一区二区三区写真| 亚洲一区二区三区首页| 国产精品一区二区四区| 久久久久99人妻一区二区三区| 国产一区二区在线观看视频| 亚洲福利秒拍一区二区| 精品无码一区二区三区爱欲九九 | 日韩欧美一区二区三区免费观看| 国产婷婷一区二区三区| 国产MD视频一区二区三区| 亚洲国产欧美国产综合一区| 国产精品夜色一区二区三区| 亚洲无删减国产精品一区| 亚洲福利视频一区| 精品人伦一区二区三区潘金莲| 久久一区不卡中文字幕| 日韩精品成人一区二区三区| 国产AV午夜精品一区二区三区| 国99精品无码一区二区三区| 久久se精品动漫一区二区三区| 国产精品va无码一区二区| 2020天堂中文字幕一区在线观| 波多野结衣一区二区| 正在播放国产一区| 国产精品毛片a∨一区二区三区| 久久久久国产一区二区| 日本一区二区在线播放| 日韩在线一区二区| 亚洲片一区二区三区| 性无码一区二区三区在线观看| 无码视频一区二区三区| 国产成人精品a视频一区| 亚洲精品一区二区三区四区乱码| 成人一区专区在线观看| 国产午夜精品一区理论片飘花|