如何让IE支持自定义协议

来源:互联网 发布:新东方网络学校 编辑:程序博客网 时间:2024/05/17 02:56
浏览QQ空间的时候发现,只要在IE地址中输入象一下这种形式的地址,
tencent://Message/?Uin=251464630&websiteName=qzone.qq.com&Menu=yes
就会弹出给 251464630 发送信息的对话框,也就是说QQ对IE地址栏的东西做了监控。而且可以发现输入地址确定之后他就启动了timwp.exe这个程序。
在PPlive也有实现类似的功能,只要你电脑上安装了PPlive 这个程序,在IE地址栏中输入synacast://09jN1+TK3K3nodzJoaLOmqeS1KGhoKOZoqGclt
然后确定,就会弹出播放CCTV5的窗口。很有意思的一种功能,竟然这么多程序都用到了,我也就找了一下,找到了一下实现方法。

方法一: 也就是QQ和PPlive所采用的方法,在注册表里面添加两种类型的注册。
QQ的:
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\""

PPlive的:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Synacast]
@="URL:synacast Protocol"
"Version"="1.5.38"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\Synacast\DefaultIcon]
@="C:\\Program Files\\PPLive\\PPLive.exe"
[HKEY_CLASSES_ROOT\Synacast\Shell]
[HKEY_CLASSES_ROOT\Synacast\Shell\Open]
[HKEY_CLASSES_ROOT\Synacast\Shell\Open\Command]
@="C:\\Program Files\\PPLive\\PPLive.exe \"%1\""

通过多方查找终于发现是注册表这两项在起作用,原来只要在注册表里象添加文件扩展名一样,添加两个Synacast和TENCENT扩展名来,IE就会自动查找到这里来调用相应的程序。IE果然和windows系统内核整合起来了!原来注册表扩展名项还有这种作用,自己见识太少了,这种方法实现IE地址的自定义估计是最简单的了。

方法二:一开始不知道方法一的时候,在网上找了很多可以实现这种功能的代码,采用BHO(Browser Helper Object,浏览器辅助对象)或者IURLSearchHook接口 来做到。也就是通常所说的IE插件了,我这里统称为方法二。如果不知道什么叫做BHO和IURLSearchHook的就去搜索一下吧,最近流氓插件很火,所以这个技术也有多人提到,借助IURLSearchHook还可以实现中文实名上网等功能,不过那些臭名昭著的流氓软件可都不是这样子坐的他更多的精力是放到防止别人卸载那边去了。



1 0
原创粉丝点击