1. 程式人生 > >【轉載】Chrome使用自定義協議開啟本地程式並執行IE開啟網頁

【轉載】Chrome使用自定義協議開啟本地程式並執行IE開啟網頁

部分內容轉載自: http://blog.sina.com.cn/s/blog_e2b8213a0102wqby.html

       專案中遇到某需求:chorme要執行IE並開啟網頁。解決方案之一就是通過自定義協議來實現該需求。

       在登錄檔中寫入如下內容來進行自定義協議:

[HKEY_CLASSES_ROOT\openIE]  
@="URL:OpenIE Protocol"  
"URL Protocol"=""  
  
[HKEY_CLASSES_ROOT\openIE\DefaultIcon]  
@
="iexplore.exe,1" [HKEY_CLASSES_ROOT\openIE\shell] [HKEY_CLASSES_ROOT\openIE\shell\open] [HKEY_CLASSES_ROOT\openIE\shell\open\command] @="cmd /c set m=%1 & call set m=%%m:openIE:=%% & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%% & exit"

        然後使用openIE協議,如《a href = “openIE:http://www.baidu.com”》點我使用外部協議執行IE開啟百度《/a》進行訪問百度。

        但是這樣會彈出cmd的命令框,給使用者帶來不好的體驗。解決方法如下:

        連結:http://pan.baidu.com/s/1sllgzxV 密碼:ugpk

         內容是一個可以解壓的exe,解壓後有三個檔案:alert.reg 與上邊的openie協議大同小異,將協議名稱換成了alert。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\alert]
@
="URL:Alert Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\alert\DefaultIcon] @="iexplore.exe,1" [HKEY_CLASSES_ROOT\alert\shell] [HKEY_CLASSES_ROOT\alert\shell\open] [HKEY_CLASSES_ROOT\alert\shell\open\command] @="cmd /c set m=%1 & \"C:\\Program Files\\alert\\openIE.bat\" %%m%% & exit"

    並且將command換成了bat檔案,不再是直接開啟ie。bat檔案內容入下:

@echo off
set m=%m:alert:=%
set m="%m:separator=&%"
start "" "C:\\Program Files\\Internet Explorer\\iexplore.exe" %m%
exit

     這些命令雖然寫不出來,但是不妨礙我們讀懂,將使用alert協議訪問的地址作為引數進行處理,然後通過ie開啟。

     最後一個檔案是runreg.bat,內容如下:

 

REGEDIT /S alert.reg

      很顯然作為exe,雙擊執行的就是這個regedit,將登錄檔寫好的同時,也將openie.bat複製到了C:\Program Files\alert\路徑下,雖然不知道它是如何實現的,但是不妨礙我進行改造處理。比如給換個路徑,比如換一個執行程式(當然執行程式支援命令列引數啟動)。

       自定義協議可以幫助我們通過瀏覽器開啟本地程式,當然不僅限於此。