js 呼叫本地 exe 方法(通用,支援目前 大部分主流瀏覽器,chrome,火狐,ie)
阿新 • • 發佈:2021-10-26
js 呼叫 本地 exe 通用解決方法
前言
在web專案中,經常遇到需要在某個頁面上需要呼叫本地的程式exe,網上有很多方法,大部分只能在ie上用 。
var path = '程式地址.exe 引數';//程式地址 +' '+ 引數; //exe程式所在位置以及要傳的引數 try { var Shell = new ActiveXObject("WScript.Shell"); Shell.Run(path,0,true); } catch (e) { console.log(e) alert("該可執行檔案不存在"); }
ActiveXObject外掛是IE所特有的,在不同瀏覽器核心下是無法通用的。只有用ie瀏覽器才可以使用ActiveXObject。
在瀏覽網頁中發現 有個 a標籤中 mailto: 用法,直接可以嗲用發郵件方法,騰訊在很多地方可以呼叫起qq進行聊天,這個功能就非常好,體驗也不錯,研究了一下他們的實現,發現是通過自定義windows URL協議 來實現的。
解決方案
思路 通過自定義URL協議來實現在網頁中呼叫 指定exe 程式,並且傳遞引數。
檔案示例
openExe.bat (具體呼叫exe的檔案)
@echo off 實際執行程式的地址在這裡配置 set m=%m:openExe:=% set m="%m:separator=&%" start "" "C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe" %m% exit
登錄檔新增 openExe URL協議
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\openExe] @="URL:openExe Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\openExe\DefaultIcon] @="openExe.exe,1" [HKEY_CLASSES_ROOT\openExe\shell] [HKEY_CLASSES_ROOT\openExe\shell\open] [HKEY_CLASSES_ROOT\openExe\shell\open\command] @="cmd /c set m=%1 & \"C:\\Program Files\\openExe\\openExe.bat\" %%m%% & exit"
dos 命令註冊登錄檔
REGEDIT /S openExe.reg
使用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="openExe:www.baidu.com">執行可執行檔案(協議名:引數)</a>
</div>
</body>
</html>
打包檔案 到exe實現自動安裝
使用winrar 新增壓縮檔案 , 建立自解壓檔案 高階 設定 安裝程式
一般 設定解壓路徑 與上面 bat 檔案地址一致
確定後,打包完成。
雙擊後就能制動 安裝完成註冊,既可以在頁面中隨意使用openExe 協議了。