如何?自訂的URL協議
來源:互聯網
上載者:User
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