前言

我们经常看到 tencent://.. thunder://     这两种开头的网址,往往觉得很奇怪,很想弄懂其中的原理,是如何实现的,我查找了相关的 资料,终于找到了,跟大家分享下。

原理篇

微软官方说明:http://msdn.microsoft.com/en-us/library/Aa767914.aspx

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

实现篇

下面我们自己来实现这样的需求:

要实现如上功能,最主要的还是对注册表的处理。新建一个注册表文件

Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT/FinstoneRpt]
@="FRptProtocol"
"URL Protocol"="I://Release//CZBYReport.exe"[HKEY_CLASSES_ROOT/FinstoneRpt/DefaultIcon]
@="I://Release//CZBYReport.exe,0"[HKEY_CLASSES_ROOT/FinstoneRpt/shell][HKEY_CLASSES_ROOT/FinstoneRpt/shell/open][HKEY_CLASSES_ROOT/FinstoneRpt/shell/open/command]
@="/"I://Release//CZBYReport.exe/" /"%1/""

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

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

当点击时,则会调用注册表中记录的程序。当然该程序可以接受参数:就是href里的所有内容。可根据情况自行判断处理。 
如需通过VS的安装程序实现安装时自动执行以上操作。在安装程序里,导入上述注册表文件,因为用户安装时的路径不一样,要定位注册表中记录的程序,只需在VS里将相关注册键值修改:

将涉及具体地址都一一改成[TARGETDIR]程序名,即可。

当你注册协议后,你就可以用指定的程序去“解释”这个协议,在软件里通过取命令行( GetCommandLine)获取传递过来的参数就行了.

利用Register protocol实现网页调用桌面程序(类似迅雷、QQ等)相关推荐

  1. 迅雷,电驴通过利用URL Protocol实现网页调用本地应用程序

    由于做项目需要实现如题的一个功能,所以搜寻了相关资料. 下面转载CSDN的一篇文章和百度文库的一篇文章,标记有待后期详细学习. CSDN博文:http://blog.csdn.net/chinahae ...

  2. Nativefier 网页转桌面程序 app

    Nativefier 网页转桌面程序 Nativefier简介 Nativefier是一个命令行工具,仅仅通过一行代码就可以轻松地为任何的网站创建桌面应用程序,应用程序通过Electron打包成系统可 ...

  3. 如何利用 Electron 把网页变成桌面程序

    正如 Electron 官方所说"如果你可以建一个网站,你就可以建一个桌面应用程序". 作为一个跨平台的桌面应用开发框架,Electron 的迷人之处在于,它是建立在 Chromi ...

  4. 网页调用exe程序(写注册表)

    一个常见的网页可以调用程序的注册表结构. 其中DefaultIcon项是可以去掉的.在win7中URL Protocol这一项也是可以去掉的,但是在win10却不行,所以还是乖乖的留着吧. 安装制作包 ...

  5. 浏览器调用桌面程序方法

    一.注册服务 1.说明 参见浏览器客服qq点击后唤起qq聊天窗口.其在注册表中添加如下信息,这个本身也是win自己支持的.其中 C:\\Program Files (x86)\\Tencent\\QQ ...

  6. 【方法】HTML网页调用本地Python程序

    欢迎支持个人chatgpt:https://chat.immuseai.com/register?promotion-code=pRE9p9DXCOBz3Z1s.注册即可使用GPT3.5和4.0. 代 ...

  7. web网页浏览器唤起wpf,winform exe桌面程序,并跳转到指定页面

    背景案例 我们看到网页上打开百度网盘,下载的时候会通过浏览器唤起百度网盘桌面端,并进入到指定页面,我们要做的,就是达到类似的效果 实现流程 1.写注册表 在桌面软件首次启动的时候,像注册表中写入程序的 ...

  8. python eel 多线程_利用Eel使JavaScript调用Python程序

    利用Eel使JavaScript调用Python程序 Eel简介 Eel是一个轻量的python桌面GUI开发第三方库, 它使用HTML/JS作为界面开发语言, 但是能够访问所有的python功能, ...

  9. 如何在网页中打开一个本地桌面程序

    如何在网页中打开一个本地桌面程序 转载 2015年11月26日 20:30:14 1473 通过网页链接打开本地本地程序,想到最多的方法就是通过activex控件,但这里介绍一个通过注册新协议来打开本 ...

最新文章

  1. DeepMind用神经网络求解MIP后,攻破运筹学只是时间问题?你想多了
  2. JS window对象常用方法
  3. 3 数组中的重复数字
  4. elasticsearch scroll 一页最大数据量_elasticsearch 百亿级数据检索案例与原理
  5. bzoj4417 [Shoi2013]超级跳马 矩乘
  6. centos7源码安装ntp_如何安装和配置 Chrony 作为 NTP 客户端?
  7. Python的第三方库pyppeteer
  8. 从css3书写顺序引出来的border-radius参数
  9. MATLAB偏微分方程数值解视频课程
  10. Algorithms-3.2 Binary Search Trees 二叉查找树
  11. 计算机病毒为了隐藏,识别计算机病毒的方法
  12. 网站建设-网站设计怎么样做的更好?
  13. VTK实现电影级渲染效果(CVR)
  14. tonybot 人形机器人 首次开机 0630
  15. QYPT SAMPLE WEBSITE
  16. 服务端渲染(SSR) 通用技术解决方案
  17. 计算机处理器的参数及意义,电脑硬件小知识之:CPU的命名和基本参数
  18. 《20年后,你靠什么生存(孙继滨)》讲座观后感 转
  19. EasyExcel设定了表格底色但是不生效的问题
  20. 根据WADL生成REST风格WebService的客户端代码

热门文章

  1. 空间数据库PostGIS
  2. 平安好医生与广西壮族自治区人民政府共建互联网大健康平台
  3. 悬镜安全:用开源的方式做开源风险治理
  4. 大数据实战项目------中国移动运营分析实时监控平台 || 项目需求实现(文章最后有数据文件)
  5. 本地电脑磁盘不够用 带你将阿里云盘秒变超大云端本地硬盘
  6. CryptoTab 服务器_网络资讯:媒体服务器是什么
  7. 现在女生做什么赚钱,这8种职业非常有前途!
  8. 程序设计原则之接口隔离原则
  9. 存放在mysql数据库的表_下列选项中,存放在mysql数据库的表是
  10. KMP算法(求解字符串匹配)