| 关键词: CLASSES tencent ROOT HKEY 协议 注册表 Zaroty 注册 相应 链接 |
出处:Zaroty's Blog 作者:Zaroty 前置知识:无 参考链接:http://msdn.microsoft.com/en-us/library/aa767914.aspx#app_reg KeyWords :腾讯 注册 协议 Register protocol QQ大家都用过吧,所以QQ的临时聊天也都见过吧,大家经常会看到一个这样的链接: tencent://message/?uin=* 到这个地方我们可以想到当我们单击一个 mailto:[email protected] 的链接的时候就会打开系统默认的 邮件发送程序。 我们可以想到这些链接前面的 mailto 、tencent 和http 、https、ftp这些的原理应该是一样的,只不过前面的 两个是打开了一个相应的程序,而后面的两个是显示的网页。 那么这些行为都是怎么实现和定义的呢? 带着这些疑问,我们打开注册表来看一下: HKEY_CLASSES_ROOT\mailto HKEY_CLASSES_ROOT\HTTP HKEY_CLASSES_ROOT\https HKEY_CLASSES_ROOT\ftp HKEY_CLASSES_ROOT\Tencent 打开上面的注册表键,查看一下相应的键值。 这些内容就是我们已经注册了的协议,对于以这些内容开头的网址,浏览器都可以找出相应的方法来显示。 我们可以看到 HKEY_CLASSES_ROOT\Tencent\shell\open\command 这个键值为: "C:\Program Files\Tencent\QQ\Timwp.exe" "%1" 由此,我们可以猜测道,当我们单击一个QQ临时聊天的链接的时候,就会启动Timwp.exe程序来相应这一操 作,来显示QQ的临时聊天窗口。 写到这里,我们就明白了,原来腾讯QQ的临时聊天是通过注册协议来实现启动聊天窗口的。 tencent 协议的注册表项: ============================================== Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Tencent] @="TencentProtocol" "URL Protocol"="C:\\Program Files\\Tencent\\QQ\\Timwp.exe" [HKEY_CLASSES_ROOT\Tencent\DefaultIcon] @="C:\\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] @="\"C:\\Program Files\\Tencent\\QQ\\Timwp.exe\" \"%1\"" ============================================== 那么我们能不能自己定义协议,来实现启动自己想要的程序呢? 答案是肯定的。 下面我们来看下注册协议的相关内容: 我们可以创建一个这样的注册表文件来实现协议的注册 ========================================== Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\zaroty] @="URL:zaroty Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\zaroty\shell] [HKEY_CLASSES_ROOT\zaroty\shell\open] [HKEY_CLASSES_ROOT\zaroty\shell\open\command] @="\"C:\\windows\\system32\\notepad.exe\"" ========================================== 注意:两个反斜干(\\)以及转义的引号(\")不应该被替换(必须的) 将虚线中间的文字保存为 Zaroty.reg ,然后双击将其导入注册表,然后单击下面的链接: zaroty:// 是不是打开了记事本呢? 简简单单,我们通过对注册表的修改,就实现了协议的注册。通过这种方法,我们就可以注册相应的协议, 打开相应的文件,使我们的浏览器变成我们的万能快捷方式。(你可以研究一下带参数的哦) |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|