如何实现自定义的URL协议

IURLSearchHook
        该接口被浏览器用来转换一个未知的URL协议地址。当浏览器企图去打开一个未知协议的URL地址时,浏览器首先尝试从这个地址得到当前的协议,如果不成功,浏览器将创建在系统中注册的URL Search Hook对象并调用每一个对象的Translate方法,直到地址被转换或所有的URL Search Hook都尝试过。
 
IURLSearchHook的方法
HRESULT Translate( LPWSTR lpwszSearchURL, DWORD cchBufferSize  );             
参数:
lpwszSearchURL
宽字符的缓冲区地址,方法被调用时。缓冲区内保存着浏览器要解析的URL地址。
如果方法返回S_OK,则缓冲区内保存被解析(修改)的URL地址。
CchButterSize
第一个参数指向的缓冲区的大小,以字节计
 
返回值:
  S_OK: URL被成功转换,lpwszSearchURL包含转换后的URL,浏览器将不会调用其它的URL Search Hook对象。
  S_FALSE: URL被部分处理,但仍然需要解析。LpwszSearchURL包含被处理后的
URL,浏览器将继续调用其它URL Search Hook对象。
  E_FAIL: URL无法转换,LpwszSearchURL没有被修改,浏览器将继续调用其它URL Search Hook对象。
 
 
     例如,用户在IE地址栏输入一个网址:
www.csdn.net。这个网址解析成功,就会跳转
到该站点。如果不存在这个域名,那么IE就会搜寻系统上注册的URL Search Hook对象
加载并调用它的Translate。如果这个方法返回S_OK,则将返回被解析(修改)的URL。
浏览器将打开此URL。
                                 
     你可以利用这个对象,当用户试图打开一个不存在的站点时把URL转向另一个站点。
或者,也可以将用户在地址栏输入的文字以关键字形式打开某个搜索引挚,如在地址栏输入
MP3,就用GOOGLE去搜索MP3。或者,做一个中文实名库,把浏览器转进来的URL到库里匹配,匹配成功后返回正确的URL。
 
如何注册一个URL Search Hook对象
     要实现一个URL Search Hook,必须在注册表的
HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/UrlSearchHooks
位置上,创建一个名称为对象CLISID的字符串的值。 注册完可能要重启后才能用。
 
注:当URL以 xxx:xxx 的形式时,即使解析不成功也不会调用URL Search Hook。
                                  只适用于MS-IE浏览器和小数浏览器。
例子参考:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值