浏览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还能够实现中文实名上网等功能,只是那些臭名昭著的流氓软件可都不是这样子坐的他很多其它的精力是放到防止别人卸载那边去了。

怎样让IE支持自己定义协议的更多相关文章

  1. CentOS6下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)

    1.先添加几个RPM下载源 1.1)安装RPMforge的CentOS6源     [root@AY130611215205Z ~]# wget -c http://pkgs.repoforge.or ...

  2. Ubuntu 14.10下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)

    Ubuntu 14.10下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具) 最近因为项目关系,收朋友之托,想制作秀场网站,但是因为之前一直没有涉及到这 ...

  3. ActiveMQ学习笔记(7)----ActiveMQ支持的传输协议

    1. 连接到ActiveMQ Connector: Active提供的,用来实现连接通讯的功能,包括:client-to-broker,broker-to-broker.ActiveMQ允许客户端使用 ...

  4. wrk 及扩展支持 tcp 字节流协议压测

    wrk 及扩展支持 tcp 字节流协议压测 高性能.方便使用的 HTTP(s) 的流量压测工具,结合了多个开源项目开发而成: redis 的 ae 事件框架 luajit openssl http-p ...

  5. SQL 2005远程连接是出错(provider: SQL 网络接口, error: 28 - 服务器不支持请求的协议

    SQL 2005远程连接是出错(provider: SQL 网络接口, error: 28 - 服务器不支持请求的协议 sql远程连接服务器网络sql serversqlserver 解决方法:在服务 ...

  6. mina的编码和解码以及断包的处理,发送自己定义协议,仿qq聊天,发送xml或json

    近期一段时间以来,mina非常火,和移动开发一样.异常的火爆.前面写了几篇移动开发的文章,都还不错.你们的鼓舞就是我最大的动力.好了,废话少说.我们来看下tcp通讯吧. tcp通讯对于java来说是非 ...

  7. Dubbo 支持哪些序列化协议?

    面试题 dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的? 面试官心理分析 上一个问题,说说 dubbo 的基本工作原理 ...

  8. 在window平台下,自己DIY编译OpenSSL,Libcurl ,来支持HTTPS传输协议

    1 缘起 原来就了解些libcurl,一直没有机会在项目实际使用libcurl.   恰好最近一个云存储的项目,服务器使用openstack 恰好我负责现在的一个云存储SDK c++版本的开发中. 与 ...

  9. jdk1.6 支持 tls1.2协议 并忽略身份验证

    jdk1.6不支持tls1.2协议,jdk1.8默认支持,比较好的解决方案是升级jdk,但是升级jdk风险极大.不能升级jdk的情况下,可以使用如下方式. 引入依赖 <dependency> ...

随机推荐

  1. CSUOJ 1541 There is No Alternative

    There is No Alternative Time Limit: 3000ms Memory Limit: 262144KB This problem will be judged on Aiz ...

  2. java设计模式--事件监听器模式和观察者模式

    监听器模式:事件源经过事件的封装传给监听器,当事件源触发事件后,监听器接收到事件对象可以回调事件的方法 观察者模式:观察者(Observer)相当于事件监听者,被观察者(Observable)相当于事 ...

  3. C++ Primer笔记12_运算符重载_递增递减运算符_成员訪问运算符

    1.递增递减运算符 C++语言并不要求递增递减运算符必须是类的成员.可是由于他们改变的正好是所操作对象的状态.所以建议设定为成员函数. 对于递增与递减运算符来说,有前置与后置两个版本号,因此.我们应该 ...

  4. android SIM Switch功能和配置

    SIM Switch feature是Smart 3G switch feature在LTE版本号上发展演变而来的功能: MTK双卡双待单通版本号仅仅有一个3/4 G Protocol.所以同一时刻仅 ...

  5. TRIZ系列-创新原理-31-多孔材料原理

    多孔材料原理的详细描写叙述例如以下:1)让物体变成多孔的.或者使用辅助的多孔部件(如插入,覆盖):2)假设一个物体已经是多孔了,那么事先往里面填充某种物质:这个原理提出的原因是,一般机械系统通常都是由 ...

  6. CentOS 开启 IPV6

    编辑网卡地址:#vi /etc/sysconfig/network-scripts/ifcfg-eth0IPV6INIT=yesIPV6FORWARDING=yesIPV6ADDR=2607:9000 ...

  7. 6.Maven之(六)setting.xml配置文件详解

    转自:https://blog.csdn.net/u012152619/article/details/51485152

  8. java poi操作excel示例代码

    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io ...

  9. C++ 补课(二)

    1,如果遇到派生类成员和基类成员的名称冲突的情况,程序会采用派生类成员执行相应的操作.如果需要使用基类中的同名成员,则必须在程序中使用全局分辨符“::” 虚基类 —— 派生类在继承基类时加入“virt ...

  10. Netty系列之Netty编解码框架分析

    1. 背景 1.1. 编解码技术 通常我们也习惯将编码(Encode)称为序列化(serialization),它将对象序列化为字节数组,用于网络传输.数据持久化或者其它用途. 反之,解码(Decod ...