网页调用本地应用程序

    xiaoxiao2026-08-28  1

    最近项目遇到一个需求,需要通过网页调用本地应用程序。 找到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 οnclick="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>  

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

    转载请注明原文地址: https://ju.6miu.com/read-1311641.html
    最新回复(0)