使用js调用客户端的exe文件,在网上搜索主要有两种方式:
1、使用ActiveXObject
<script type="text/javascript">
function open_exe(strPath)
{
try{
//新建一个ActiveXObject对象
a = new ActiveXObject("wscript.shell");
a.run(strPath);
}catch(e)
{
alert('找不到文件 ');
}
}
</script>
然后调用方式如下:
<button οnclick="open_exe(您的exe文件地址)">调用Exe</button>
但是呢,对于ActiveObject这个鬼东西只有IE才支持,但是我又是那种极不愿意用IE的奇葩,而且这种方式将把客户端访问限制在IE里面,也是怎么OK的。所以呢,这儿有了第二种方式,和注册表相关的东西。
2、url protocol方式实现
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Browser]
@=""
"URL Protocol"=""
[HKEY_CLASSES_ROOT\Browser\DefaultIcon]
@="C:\\3R\\Programs\\MPS2WSM\\MPS2WSM.exe" ------>你的exe地址
[HKEY_CLASSES_ROOT\EmrBrowser\Shell]
@=""
[HKEY_CLASSES_ROOT\Browser\Shell\Open]
@=""
[HKEY_CLASSES_ROOT\Browser\Shell\Open\Command]
@="C:\\3R\\Programs\\MPS2WSM\\MPS2WSM.exe" ------>你的exe地址
上面的方式是一种不传值得调用,如果想要传值得这样:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Browser]
@=""
"URL Protocol"=""
[HKEY_CLASSES_ROOT\Browser\DefaultIcon]
@="D:\\MyCode\\learnTest\\RegisterURI\\wrapper.exe"
[HKEY_CLASSES_ROOT\EmrBrowser\Shell]
@=""
[HKEY_CLASSES_ROOT\Browser\Shell\Open]
@=""
[HKEY_CLASSES_ROOT\Browser\Shell\Open\Command]
@="D:\\MyCode\\learnTest\\RegisterURI\\wrapper.exe %1"---->1% 代表传入的参数
具体解释可以参考:https://blog.youkuaiyun.com/bzt820801/article/details/77653759
这种方式在程序上调用如下:
a、不传值
<a href="Browser:" style="display:none"><span id="runmpstowsm">运行程序</span></a>
a标签里面装个span,是因为在这我是用了trigger来调用,具体原因查看:
https://blog.youkuaiyun.com/qq_24266485/article/details/80756796
b、传值
<a href="Browser:// 参数1 参数2">运行程序</a>
------------------------------------------------更新-----------------------------------------------------------------------------
上面的URL protocol方式的却能行,但是在我这里,运行了以后,如果第二天或者隔一段时间运行仿佛注册表就失效一样,程序就不能直接调用起来(至少在我这里是这样的),需要再执行一下这个.reg文件才可以,这样很不好。所以我用了下面的代码重新注册了下注册表,反正这几天来都是可以的,参考下:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Browser]
"URL Protocol"="C:\\3R\\Programs\\MPS2WSM\\MPS2WSM.exe"
@="WebshellProtocol"
[HKEY_CLASSES_ROOT\Browser\DefaultIcon]
@="C:\\3R\\Programs\\MPS2WSM\\MPS2WSM.exe"
[HKEY_CLASSES_ROOT\Browser\shell]
[HKEY_CLASSES_ROOT\Browser\shell\open]
[HKEY_CLASSES_ROOT\Browser\shell\open\command]
@="C:\\3R\\Programs\\MPS2WSM\\MPS2WSM.exe"
与上面的代码区别不大,同样的用法。。。