有時候我們想要實現一個功能,就是在HTML頁面點擊一個鏈接就能調用打開本地可執行文件。就像騰訊QQ、迅雷這種。
而實現這種功能其實也很簡單,就是需要我們添加修改注冊表,實現自定義URL Protocol協議。
自定義URL Protocol 協議
一些應用軟件可以在瀏覽器中點擊一個url后自動啟動,並執行操作。
1. win+r打開注冊表,輸入regedit進入注冊表
2. 在注冊表 左邊最上面HKEY_CLASSES_ROOT那個樹右鍵新建——項。該項的名稱自己命名,其實該名稱也是協議的名稱,我們調用的時候就是根據該協議調用的,而我這里隨便起了一個:ZZO。
3. 然后在該項中右鍵->新建->字符串值,創建一個URL Protocol的值,其中數據默認為空。
4. 然后在ZZO下新建->項,名字為DefaultIcon
5. 在ZZO下新建->項,名稱為shell。並在shell下新建名為open的項。然后在open下新建名為command的項
6. 然后分別修改DefaultIcon 和 command 的值為要調用的程序完整路徑.
比如我這里要調用的是QQ,完整路徑為:D:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe
7. 然后我們在html頁面添加一個a標簽
<a href="Zzo://">open</a>
8. 點擊頁面按鈕
通過網站調用可執行程序,主要是修改注冊表,注冊 URL Protocol 協議。
注意上面 command 項的值可以為 C:\Program Files (x86)\Qiaoker\updater.exe "%1" ,這個"%1"是傳遞給 updater.exe的參數。
加了后使用是我們就可以傳參數了,
<a href="Uaiqiy://cid:110&username:mjq">
方式二:使用js調起客戶端
除了上面那種方式,我們還可以通過調用js函數實現客戶端exe程序的調用,但是這種方式局限性很大,目前只支持IE瀏覽器。
代碼如下:
function execProgram() {
var exepath = "D:\\Program Files (x86)\\Tencent\\QQMusic\\QQMusic.exe"
var ws = new ActiveXObject("WScript.Shell");
ws.Exec(exepath);
}
如果想要調用bat腳本或者vbs程序,可以將ActiveXObject 的 Exec()方法替換成Run() 方法。
function execProgram() {
var exepath = "C:\\Users\\LeBron\\Desktop\\新建.vbs"
var ws = new ActiveXObject("WScript.Shell");
ws.Run(exepath);
}
原文鏈接:https://blog.csdn.net/lebron3v/article/details/80736744
