HTML调用本地EXE程序
方法1-ActiveXObject
1 2 3 4 5 6 7 8 9 10 11 12
| <script language="javascript"> function RunExe(){ w = new ActiveXObject("WScript.Shell"); w.run('notepad.exe e:/a.bat'); return true; } </script> <form id="form1"> <div> <input type="button" value="Run" onclick="return RunExe()" /> </div> </form>
|
简单但是不通用,只支持IE
方法2-URIScheme
创建流程:
CMD
-> regedit
选中HKEY_CLASSES_ROOT右击
-> 新建 项
-> myprotocol
选中myprotocol右击
-> 新建 项
-> DefaultIcon
选中myprotocol右击
-> 新建 项
-> Shell
选中myprotocol右击
-> 新建 字符串值
-> URL Protocol
选中DefaultIcon
-> 修改默认 值为C:\windows\notepad.exe
选中Shell右击
-> 新建 项
-> open
选中open右击
-> 新建 项
-> command
选中command右击
-> 修改默认 值为C:\windows\notepad.exe %1
导出的结果如下:
myprotocol.regview raw1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\myprotocol] @="ZM Protocol" "URL Protocol"="E:\\test.bat %1"
[HKEY_CLASSES_ROOT\myprotocol\DefaultIcon] @="C:\\Windows\\notepad.exe"
[HKEY_CLASSES_ROOT\myprotocol\shell]
[HKEY_CLASSES_ROOT\myprotocol\shell\open]
[HKEY_CLASSES_ROOT\myprotocol\shell\open\command] @="E:\\test.bat %1"
|
调用方法:
在浏览器中输入myprotocol://e:/a.bat/
提示错误的文件路径
这个是因为传入的参数错误,打印发现%1被设置为myprotocol://e:/a.bat/
,而不是预想的e:/a.bat
因此需要处理传入的参数
1 2 3 4 5 6 7
| @echo off set arg=%1 set arg1=%arg:~13,-1% echo %arg1% start notepad %arg1%
|
其中13是myprotocol://
的长度
%arg:~13,-1%
是取arg
字符串的第13个~倒数第二个的子串
一切OK了
现在html中简单一行就可以调用了
<a href="myprotocol://e:/a.bat/">打开a.bat</a>
参考文档
- [https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx]
- [http://www.voidcn.com/article/p-ehydagiu-uv.html]
- [http://www.yihaomen.com/article/other/212.htm]
- [http://www.jb51.net/article/37278.htm]