註冊自定義URL協議
阿新 • • 發佈:2019-02-12
用過電驢的朋友都知道電驢有這麼一個功能,在網頁上點選電驢資源的連結,如果你的機器上安裝了電驢,那麼電驢就會自動啟動,然後下載所選的資源。這些日子做專案的時候Boss剛好提了這麼個需求,經一位同事指點,研究了一下,原來是醬子實現的。
首先檢視一下電驢資源的連結,可以看到全部是已ed2k開頭的,比如這個:
ed2k://|file|06527%E5%A5%87%E8%B6%A3%E5%A4%A7%E8%87%AA%E7%84%B6_%E5%BE%AE%E8%A7%82%E4%B8%96%E7%95%8C%28%E4%B8%8B%29.rmvb|89831750|02C2BAFDCC4950CC3C2E6F583C07E896|h=T3ZB75TXBLJU5AAL6WSTYWMT6YJPUIQS|/
真沒想到原來這麼簡單的,我在這裡記錄下來:
如果你要讓程式處理某個自定義URL協議的話,只要在HKEY_CLASSES_ROOT註冊一下這個協議就可以了。
比如我們網站上的連結都是已CustomProtocol開頭的,例如:CustomProtocol://www.MyWeb.com/xxx.rar,我們要求使用者點選這個連結的時候啟動我們的CustomApp程式來處理,那麼我們只要註冊CustomProtocol協議就可以了,具體就是在HKEY_CLASSES_ROOT按照下面的樣子建立各個專案:
HKEY_CLASSES_ROOT- CustomProtocol 協議的名稱,比如電驢的就是ed2k
- (Default) = "URL:Custom Protocol" 協議顯示的名稱,隨便寫寫
- URL Protocol= "" 這裡可以寫下協議的描述什麼的,否則就為空吧
- DefaultIcon
- (Default) = "CustomApp.exe" 預設圖示,一般都是CustomApp的名字
- shell
- open
- command
- (Default) = "C:/CustomApp.exe" "%1" CustomApp的全路徑名
這樣註冊下就ok了,當用戶點選網站上那些以CustomProtocol開頭的連結的時候,系統就會呼叫CustomApp,並且把完整的連結作為引數傳給CustomApp。
非常簡單吧,如果還有什麼不明白的,安裝下電驢,在登錄檔裡查下HKEY_CLASSES_ROOT下面的ed2k項,看看電驢是怎麼寫的。
而普通的檔案下載一般都是Http或者Ftp的, 那麼大家看下MSDN這篇文章,就全明白了:http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/pluggable/overview/appendix_a.asp?frame=true