IE瀏覽器—自訂地址協議詳解(非轉載)

來源:互聯網
上載者:User

        類似問題:實現一個類似迅雷下載的功能,使用者點擊下載連結,如果使用者未安裝迅雷,則彈出迅雷安裝對話方塊,已經安裝迅雷,則要求啟動迅雷,並下載使用者想要的種子。

        核心實現:最近開發用戶端程式,被要求實現一個自訂的IE地址欄協議,目的是為了通過在IE地址欄中輸入一串符合規則的命令,可以達到和用戶端程式通訊的效果。自己思索良久,並在網上查閱相關資料,發現皆是拷貝,而且內容表述很亂,所以想在這裡寫一篇隨筆,以備其他童鞋查閱用,如有異議隨便拍磚~~哈哈

        我這裡實現的功能,主要是為了以後方便使用者通過郵件,IE地址串連等方式可以方便的與用戶端程式進行通訊。

        要實現IE自訂地址協議,首先應該要在註冊表裡將協議定義好。如下:

        找到註冊表裡面的HKEY_CLASSES_ROOT項,在裡面建立一個 項,我這裡取名iDesk,這個項,就是協議的入口,接下來:  

        

        按照格式建項,其中command中資料的值是啟動程式入口地址, 這點很重要,這個是你要與之通訊的那個程式的安裝地址,那麼下面我來貼上實現上述功能的代碼:

        /// <summary>
        /// 建立註冊表值
        /// </summary>
        /// <param name="value">程式路徑</param>
        public static void CreateRegeStartKey(string value)
        {
            try
            {
                RegistryKey key = Registry.ClassesRoot;
                RegistryKey iDesk = key.CreateSubKey("iDesk");
                iDesk.SetValue("", "Url protocol");
                iDesk.SetValue("Url protocol", value);
                RegistryKey DefaultIcon = key.CreateSubKey("iDesk\\DefaultIcon");
                DefaultIcon.SetValue("", value + ",0");
                RegistryKey command = key.CreateSubKey("iDesk\\shell\\open\\command");
                command.SetValue("", string.Format("\"{0}\",\"%1\"", value));
            }
            catch (Exception ex)
            {
                ExceptionHandler.CreateExceptionLog(ex);
            }
        }

         有了註冊表的這些項,那麼下面與用戶端程式通訊就比較容易了,這些項要你在安裝用戶端的時候寫進註冊表的,你要是不想360彈出阻止視窗的話,最好給應用程式簽一下名。

         我們在IE地址欄中輸入iDesk://www.baidu.com ,這個時候IE瀏覽器將會尋找你在上面所設定的應用程式地址,並給應用程式傳去訊息,訊息格式為:“,iDesk://www.baidu.com”,引號裡面的內容是訊息內容,當然,如果安全性較高的話,你可以給訊息加密。              

         那麼用戶端如何接收訊息呢,我想這個就比較簡單了,這個要從入口函數的數組裡面找,即從static void Main(string[] args)的args[]數組裡面取,取出來將協議解析一下,任務就OK了。

         結束語:實現上面的功能這樣看其實很簡單,當然還有很多後續的工作等待我們去處理,但是把複雜的問題細化之後,然後各個擊破,其實問題也就變得簡單了。就像開頭的問題一樣,去實現一個迅雷下載功能類似,使用者開啟網址想要下載一個東西,點選連結地址,這個時候使用者如果未安裝迅雷,瀏覽器將會彈出迅雷下載的視窗,讓使用者下載迅雷(一個activeX控制項實現,判斷使用者有無安裝迅雷),否則通過協議開啟迅雷,並給迅雷程式傳去下載種子的連結地址,等待使用者點擊確定下載。讀懂這篇隨筆之後,實現這個功能,豈不是很簡單!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.