在网页如何调用客户端的可执行文件

简介: 原文:在网页如何调用客户端的可执行文件 在网页如何调用客户端的可执行文件 最近,群里在讨论如何从网页中打开一个exe文件。在群里面说了下思路,但总说不清楚,答应写一篇文章出来。这几天事情挺多,一直没时间写,让阿超同学久等了。
原文: 在网页如何调用客户端的可执行文件

在网页如何调用客户端的可执行文件

最近,群里在讨论如何从网页中打开一个exe文件。在群里面说了下思路,但总说不清楚,答应写一篇文章出来。这几天事情挺多,一直没时间写,让阿超同学久等了。

基于浏览器的应用,表现力始终不够丰富,我们常常会想,在一个网页中,点一下某个链接,能够直接调用安装好的可执行程序有多好啊。按照微软的推荐,应该是通过ActiveX,把可执行程序嵌入到网页中,例如flash的ActiveX。这样,我们就要购买ActiveX的签名,不通过签名的东西,在IE6中是无法加载的,为一个小项目购买ActiveX的签名,代价太昂贵了。另外,很多时候还要考虑如果用户突然关闭了浏览器该怎么办。这对播放个flash、歌曲之类的没多大影响,但是很多时候,不能在关闭前清扫战场,带来的后果是灾难性的。通常,在企业应用中,我们总是通过IE直接调用exe。
最早的时候,从网页调用一个EXE是很简单的事情,一段javascript就可以了。但是,自从IE6开始,微软就不再允许这种“极不安全的行为”。这也是有道理的。没事就给你来个“format d:/q”,即使不这么恶劣,动不动就给你弹几百个notebook,也确实够恐怖的。浏览器不应该与操作系统有太多不必要的关联。
拿javascript在IE6测试之后,我几乎放弃了直接调用exe的想法,直到有一天,看到了腾讯的实现方法。
腾讯有一个在网页上面显示QQ状态的东西,点一下就能弹出一个对话框跟该QQ用户聊天,而不会有任何警告。好神奇啊。注册表里面研究了一天,终于明白了怎么回事。

在windows中,注册表中包含各种协议(http,ftp,telnet等)的信息,包含了默认打开方式的参数。试一下,从IE的地址栏中输入telnet://www.163.com,出现什么了?弹出了一个命令行窗口,开始进行telnet操作。IE居然能完成这个,那么为什么就不能完成“telnet1://参数” 呢?

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/SIMS]
@="SIMS"
"URL Protocol"="C://PROGRA~1//SIMS//trans.exe %l"

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/SIMS/DefaultIcon]
@="%SystemRoot%//system32//url.dll,0"

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/SIMS/Shell]

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/SIMS/Shell/open]

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/SIMS/Shell/open/command]
@="C://PROGRA~1//SIMS//trans.exe %l"


把这个东西导入注册表,那么我们在浏览器中输入sims://1022,那么就会自动调用c:/program files/sims/trans.exe(当然了,你得确实有这个文件),并把1022这个参数传给该exe。这个操作被认为是安全的,不会有任何的限制。
到这里,思路就清晰了,我们的安装程序中,在注册表中建个协议,例如上面的SIMS,再把要执行的exe的路径信息写入,在网页直接一个超链接,协议://参数就可以了。exe文件接受这个参数,进行相应的处理。搞定。

记住,协议://后面的所有字符串被看做是一个参数。那么,exe文件永远只有两个参数,参数0是它的完整执行路径,参数1就是网页传过来的字符串

目录
相关文章
|
4月前
|
Web App开发 测试技术 API
Postman软件基本用法:浏览器复制请求信息并导入到软件从而测试、发送请求
Postman软件基本用法:浏览器复制请求信息并导入到软件从而测试、发送请求
|
4月前
|
Ubuntu
这个错误提示是因为`hgctl`工具在尝试打开浏览器时,找不到可执行的`xdg-open`文件
这个错误提示是因为`hgctl`工具在尝试打开浏览器时,找不到可执行的`xdg-open`文件
54 1
|
4月前
|
Ubuntu
因为`hgctl`工具在尝试打开浏览器时,找不到可执行的`xdg-open`文件
因为`hgctl`工具在尝试打开浏览器时,找不到可执行的`xdg-open`文件
43 1
IIS发布程序,出现:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理解决方案
IIS发布程序,出现:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理解决方案
|
JavaScript 前端开发
使用Fiddle对浏览器从服务器端接收到的SAP UI5库文件源代码进行修改
Sometimes for trouble shooting or research purpose, you would like to make small changes on framework js file, and test how your application would react to those changes. For example I would like to add a new line for debugging purpose before line 70.
使用Fiddle对浏览器从服务器端接收到的SAP UI5库文件源代码进行修改
|
NoSQL 关系型数据库 MySQL
Runnable 在浏览器里发现、分享、修改、编译、运行代码片段
对于大部分开发者而言,搜索代码片段是他们的日常。问题在于这些代码片段分布在整个网络上。来自亚马逊的几位程序员无法忍受这样的麻烦,于是创立了代码片段一站式服务平台Runnable,他们把它称作“代码界的Youtube”。在Runnable上,用户不但可以找到代码片段,而且还可以修改乃至运行这些代码片段。
117 0
Runnable 在浏览器里发现、分享、修改、编译、运行代码片段