前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浏览器启动外部软件

浏览器启动外部软件

作者头像
晓晨
发布2018-06-22 14:57:14
2K0
发布2018-06-22 14:57:14
举报
文章被收录于专栏:晓晨的专栏晓晨的专栏

常可以看见使用浏览器代码启动本地应用的软件.例如qq、迅雷、等等.那么他们是怎么做到的呢? 它的奥秘:Register protocol 前言我们经常看到 tencent://..thunder://这两种开头的网址,往往觉得很奇怪,很想弄懂其中的原理,是如何实现的,我查找了相关的 资料,终于找到了,跟大家分享下。原理篇

tencent://..

thunder://..

这些是腾讯和迅雷的协议,即页面上或地址栏里的链接只要输入带有 tencent://… 的协议,就会自动调用一个已写好的程序执行该协议的操作。 或者是打开页面,迅雷的是下载资源的链接 。通过微软的说明,知道这是Register protocol,对于 Windows、Linux 和 OS X 操作系统都可以注册这样的协议。比如说 Windows,其实只需写入注册表,即可实现协议与执行程序的关联。例如腾讯的协议注册表如下:

代码语言:javascript
复制
[HKEY_CLASSES_ROOT\TENCENT]
@="TencentProtocol""URL Protocol"="D:\\Program Files\\Tencent\\QQ\\Timwp.exe"
[HKEY_CLASSES_ROOT\TENCENT\DefaultIcon]
@="D:\\Program Files\\Tencent\\QQ\\Timwp.exe,1"
[HKEY_CLASSES_ROOT\TENCENT\shell]
[HKEY_CLASSES_ROOT\TENCENT\shell\open]
[HKEY_CLASSES_ROOT\TENCENT\shell\open\command]
@="\"D:\\Program Files\\Tencent\\QQ\\Timwp.exe\" \"%1\""

 所实现的就是当浏览器(或其它)碰到 tencent://… 时,自动调用Timwp.exe,并把tencent://… 地址作为第一个参数传递给Timwp.exe。实现篇下面我们自己来实现这样的需求:要实现如上功能,最主要的还是对注册表的处理。新建一个注册表文件

代码语言:javascript
复制
Windows Registry Editor Version 5.00  
[HKEY_CLASSES_ROOT\FinstoneRpt] 
@="FRptProtocol" "URL Protocol"="I:\\Release\msdn5.exe"
 [HKEY_CLASSES_ROOT\FinstoneRpt\DefaultIcon] @="I:\\Release\\msdn5.exe,0" 
[HKEY_CLASSES_ROOT\FinstoneRpt\shell] 
 [HKEY_CLASSES_ROOT\FinstoneRpt\shell\open]
  [HKEY_CLASSES_ROOT\FinstoneRpt\shell\open\command] 
@="\"I:\\Release\\msdn5.exe/" \"%1\""

 以上定义了协议名:FinstoneRpt,及相关调用处理程序的位置。各位可自行调整。将上述内容导入到注册表中! 然后在相关网页里加上一个连接:

<a href="FinstoneRpt://message/?id=3e5065a6-19a0-41e6-afab-db7cc4bd3c76">test</a>

当点击时,则会调用注册表中记录的程序。 当然该程序可以接受参数:就是href里的所有内容。可根据情况自行判断处理。 如需通过vs的安装程序实现安装时自动执行以上操作。在安装程序里,导入上述注册表文件,因为用户安装时的路径不一样,要定位注册表中记录的程序,只需在vs里将相关注册键值修改:将涉及具体地址都一一改成[TARGETDIR]程序名,即可。当你注册协议后,你就可以用指定的程序去“解释”这个协议,在软件里通过取命令行(GetCommandLine)获取传递过来的参数就行了.

本文转自:http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1087

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-12-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档