网页调用本地应用程序

来源:互联网 发布:小米手环怎么清除数据 编辑:程序博客网 时间:2024/05/02 01:45
最近项目遇到一个需求,需要通过网页调用本地应用程序。
找到2个方法,记录一下。
第一个方法,使用WScript.Shell
<html><head>    <title>Test Page</title><script type="text/javascript" language="jscript">function Run(strPath){var objShell = new ActiveXObject("wscript.shell");objShell.run("notepad.exe") ;      //objShell.run("notepad d:/aa.docx");  //  objShell.run("D:\\aa.docx");  objShell = null;}</script></head><body>      <BUTTON class=button onclick="Run()" style="right:0; bottom:0;">确定</BUTTON></body></html>


WScript.Shell对象的Run方法可以直接运行文件(包括协议文件),会启动相关联的程序打开该文件(没有关联则出错)。
比如:objShell.run("D:\\aa.docx"); 
Run方法可以直接运行位于path环境变量目录中的程序,还能运行在注册表App Paths中设置的程序“别名”.
比如:objShell.run("notepad.exe"); 




第二个方法,利用URL Protocol
利用自定义URL Protocol来调用应用程序。
(参考百度文库:http://wenku.baidu.com/view/df42b5e1856a561252d36f68.html)
浏览器在解析到自定义URL Protocol之后,会寻找注册表,然后通过注册表启动相应的程序,然后启动改程序,传入参数。
我写个一个例子,给notepad++定义一个URL Protocol(Webshell),然后调用它
1)自动进行reg注册表注册

此处参考百度文库中的说明,利用记事本直接构造一个reg文件,实现上述自动注册的功能:
################################添加自定义URL Protocol##################################
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Webshell]
"URL Protocol"="D:\\Notepad++\\notepad++.exe"
@="WebshellProtocol"
[HKEY_CLASSES_ROOT\Webshell\DefaultIcon]
@=" d:\\Notepad++\\notepad++.exe,1"
[HKEY_CLASSES_ROOT\Webshell\shell]
[HKEY_CLASSES_ROOT\Webshell\shell\open]
[HKEY_CLASSES_ROOT\Webshell\shell\open\command]
@="d:\\Notepad++\\notepad++.exe \"%1\""
#####################################################################################
在#内的为自定义URL Protocol的注册表信息,对每一行说明一下:
第一行是注册表工具的版本信息,可以自己改一改,或者自己导入任意一个注册信息,把这一行复制过来就行了;
第二行中的Webshell就是在HKEY_CLASSES_ROOT下面添加一个Webshell树,其中Webshell的名称就对应着自定义URL Protocol的名称,在web中调用的时候需要这个名称;
第三行中的"D:\\Notepad++\\notepad++.exe"是指定应用程序的路径,注意只能是exe的程序;
第四行是协议的名称,可以是任意字符串,后面不会用到;
第五行表示在Webshell中再加一个分支,照抄,不用管;
第六行中的d:\\Notepad++\\notepad++.exe也是对应的程序路径,后面的1照抄;
第七行同第四行
第八行同第四行;
第九行同第四行;
第十行也是将路径换成自己的程序路径即可,其中%1表示到参数,参数可以在你的程序notepad++.exe中解析得到。
将#之间的内容复制到一个txt文档中,修改后缀名为.reg,双击该文件即可直接导入到注册表中。如下图:


2)构造网页测试代码


然后构造一个最简单的测试页面进行调用测试,测试页面代码仅为一行,如下: 
<html>  
<a href="Webshell:hello">Wheshell</a>  
</html>  

实际运行的演示效果如下所示:


0 0
原创粉丝点击