不知道是现在的项目比较变态还是怎么了,现在又了个很奇怪的需求,要求在B/S环境中偶尔调用本地可执行程序。奇怪归奇怪,但是既然是这样的,我已不能改变什么,要改业只能改变的我的思维,按照这个需求来设计开发了。
google了一番了,发现完成这个需求还真有几种方法:1.通过JavaScript调用ActiveX组件,同过ActiveX打开应用程序。
2.通过JavaScript重定向到本地程序。
首先,第一种方法不够实用,原因很复杂,ActiveX需要签名,得到这个签名是要钱的。之后的就不说,钱很重要,所以Pass。
第二种方法,在这里要着重讲解下,因为这是这篇文章的重点。大家都做过重定向的,简单说就是在地址栏中键入新的地址使浏览器跳转到新的页面,用JavaScript的话就是location = “www.anshien.blog.163.com”即可。但是你能在IE中打开某个特定的应用程序吗?
不知道大家在某些网站或论坛中是否看过或用到过QQ标签的快捷方式。它会打开QQ软件进行即时聊天。这是如何实现的?其实还是很简单的。以QQ为例,我将要写入注册表的信息列出来:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyQQ]
@="MyQQ"
"URL Protocol"="D:\\Program Files\\tencent\\QQ2009\\Bin\\QQ.exe %l"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyQQ\DefaultIcon]
@="%SystemRoot%\\system32\\url.dll,0"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyQQ\Shell]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyQQ\Shell\open]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MyQQ\Shell\open\command]
@="D:\\Program Files\\tencent\\QQ2009\\Bin\\QQ.exe %l"
如上,只要将以上信息写入注册表,再在IE中键入"MyQQ://123456789”,回车,QQ软件即可打开。
其实,这个方法是自定义了一个协议,并通过注册表关联到特定应用程序的过程。如同http协议一样。
谢谢,如有错误,请指正。
联系客服