如何實現自定義的URL協議

2021-04-07 02:17:21 字數 1432 閱讀 3095

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轉向另乙個站點。

或者,也可以將使用者在位址列輸入的文字以關鍵字形式開啟某個搜尋引摯,如在位址列輸入

***,就用google去搜尋***。或者,做乙個中文實名庫,把瀏覽器轉進來的url到庫里匹配,匹配成功後返回正確的url。

如何註冊乙個url search hook物件

要實現乙個url search hook,必須在登錄檔的

hkey_local_machine/software/microsoft/internet explorer/urlsearchhooks

位置上,建立乙個名稱為物件clisid的字串的值。

註冊完可能要重啟後才能用。

注:當url以 ***:*** 的形式時,即使解析不成功也不會呼叫url search hook。

只適用於ms-ie瀏覽器和小數瀏覽器。

例子參考:

自定義 如何自定義協議

何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...

DELPHI實現通過URL觸發自定義協議的軟體

unit umainform inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,comctrls,stdctrls,registry,extctrls varmainform...

自定義實現URL重寫 04 18

1 定義xml規則,配置好url節點 xml version 1.0 encoding utf 8 urls rewrite name shownews pattern news d html page news.aspx query id 1 rewrite urls 2 對xml的解析,對其進行...