记录点滴
品味人生

url protocol -从web调用本地exe应用程序

浏览器可以通过url的协议头执行相应的操作,常见的url协议如下:

http(s)://  超文本传输协议
ftp://  传输文件协议
file://  获取本地文件协议
mailto://  发送邮件协议
tel://  打电话协议
sms://  发短信协议

所以当我们点击mailto://头的链接时,浏览器会去调用系统配置的邮件默认应用,当点击thunder://头的链接时,浏览器会调用迅雷新建下载任务。那么,如果我们也希望自己的程序能够响应特定url的响应时该怎么办呢,这里提供一种url protocol的方法。

首先,浏览器之所以知道该协议头为系统已定义好的协议头并且调用哪个应用程序,是因为windows的注册表记录了该信息,可以通过在[HKEY_CLASSES_ROOT]下添加键值实现:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\test]
"URL Protocol"="C:\\test.exe"
@="TestProtocol"
[HKEY_CLASSES_ROOT\test\DefaultIcon]
@="C:\\test.exe,1"
[HKEY_CLASSES_ROOT\test\shell]
[HKEY_CLASSES_ROOT\test\shell\open]
[HKEY_CLASSES_ROOT\test\shell\open\command]
@="\"C:\\test.exe\" \"%1\""

上述注册表信息中,在[HKEY_CLASSES_ROOT]下添加了test树,test则对应着url protocol的协议头名称test://,键值URL Protocol则指定了调用的应用程序的详细路径,注意,此处只可指定exe程序,下方的@="TestProtocol"是标识协议的名称,任意字符串即可。接着添加了DefaultIcon分支,指定默认图标,@="C:\\test.exe,1"表示选取C:\\test.exe这个文件里索引为1的位图作为图标。接着添加shell\open\command,指定如何在链接中传参数,%1表示整个协议链接作为参数传递给C:\\test.exe。将上述内容存为.reg文件,双击导入注册表,至此,注册表添加完毕。

此外,还需要html的配合,在html中添加a标签:<a href="test://action?value1=1&value2=2">test</a>,点击后即可调用本地的C:\\test.exe并且将test://action?value1=1&value2=2这条字符串作为参数传递给他,只需程序中针对其进行参数解析即可达到想要的效果。

删除该url protocol也简单,直接删除[HKEY_CLASSES_ROOT]下的test树即可,这里也给出代码:

Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\test]

将上述内容存为.reg文件,双击导入注册表,至此,注册表删除完毕。

赞(1) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《url protocol -从web调用本地exe应用程序》
文章链接:https://blog.bone4sh.cn/post-5.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下吧

支付宝扫一扫打赏

微信扫一扫打赏