如何实现自定义的URL协议

王朝other·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

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浏览器和小数浏览器。

例子参考:

http://www.codeguru.com/Cpp/I-N/ieprogram/article.php/c1243

2004-11-29

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航