信大家在使用一些軟件的時候會發(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
在#內(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)解析路徑,在生成的相對路徑中解析出程序真正需要的路徑。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。