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
rem openExe 是url協議名 使用<a href="openExe:參數" >打開exe</a>
set m=%m:openExe:=%
set m="%m:separator=&%"
rem 實際運行程序的地址在這里配置 %m% 是參數
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 協議了。