浏览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. SpringMVC框架的多表查询和增删查改

    必须声明本文章==>http://www.cnblogs.com/zhu520/p/7883268.html 一: 1):我的运行环境 我使用myeclipse(你也可以使用eclipse),t ...

  2. 【Uva 1627】Team them up!

    [Link]: [Description] 给你n个人; 有一些人之间有认识关系 a认识b,b不一定认识a 让你把这n个人分成两组 使得这两组中的每一组: 组内的人与人之间都相互认识. 并且,使得两组 ...

  3. call 方法和 apply方法

    1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

  4. 突破极限 解决大硬盘上安装Unix新思路

    一.问题提出 硬盘越做越大,然我喜欢让我忧.10年前就遇到过在586电脑BIOS不认识超过8.4G容量硬盘的问题,以及Windows Nt操作系统不认大硬盘(容量超过8.4G)的问题,对于Linux ...

  5. 关于字符串math函数的用法例子

    var objStr=new String("Yue I love you till the end of my life!"); var reg3 = /[^\s+]/g; ob ...

  6. tcp为什么要三次握手

    作者:大闲人柴毛毛链接:https://www.zhihu.com/question/24853633/answer/254224088来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...

  7. 记录一个mybatis编写xml遇到的错误:java.lang.unsupportedOperationException

    写完xml里的sql在执行xml中的sql时报错,经过排查找到问题出在方法中的resultType这个属性的类型上 如图所示:只需要将sortedSet改为set集合里所存储的对象的类型即可. 这里我 ...

  8. nice---进程优先级

    在当前程序运行优先级基础之上调整指定值得到新的程序运行优先级,用新的程序运行优先级运行命令行"command [arguments...]".优先级的范围为-20 - 19 等40 ...

  9. C# 将引用的DLL文件放到指定的目录下

    原文:C# 将引用的DLL文件放到指定的目录下 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/sweety820/article/details/2 ...

  10. hdu 1233 还是畅通project (克鲁斯卡尔裸题)

    还是畅通project                                              Time Limit: 4000/2000 MS (Java/Others)    M ...