Windows和Mac瀏覽器啟動本地程序


前言

這幾天有個需求,需要在IE上啟動本地程序,就如下面一樣。

一開始,我還以為IE有提供特殊的接口,類似上圖中的“RunExe”,可以找了大半天覺得不對經(找不到該方法)。

后來想想不對,這種方式是ActiveX控件。

ActiveX控件基本概念

ActiveX控件可以看作是一個極小的服務器應用程序,它不能獨立運行,必須嵌入到某個容器程序中,與該容器一起運行。這個容器包括WEB網頁,應用程序窗體等。

ActiveX控件的后綴名是OCX或者DLL。一般是以OCX和動態庫共存的形式打包成cab或者exe的文件放在服務器上,客戶端下載后運行安裝cab或exe解壓成OCX和動態庫共存的文件,然后注冊ocx文件。

ActiveX控件是基於com標准,使得軟件部件在網絡環境中進行交互的技術集。它與具體的編程語言無關。作為針對Internet應用開發的技術,ActiveX被廣泛應用於WEB服務器以及客戶端的各個方面。同時,ActiveX技術也被用於方便地創建普通的桌面應用程序,此外ActiveX一般具有界面。

PS:使用ActiveX需要設置IE的安全級別,Internet選項-->安全-->自定義級別--> 對沒有標記為安全的ActiveX控件進行初始化和腳本運行—>啟用。

結論

所以就如啟動QQ、迅雷,根本就不是用ActiveX控件,嚴格上講,ActiveX控件已經是實現業務邏輯的可視化界面(類似Chrome的拓展程序),所以這種方式被拋棄,因為我是要啟動本地一個程序,而不是一個“插件”。

自定義協議

就如果迅雷和QQ,可以用類似tencent://message,直接在頁面啟動程序。

做法:

Windows:在注冊表添加一個新的key以及相關的value到HKEY_CLASSES_ROOT中,來使應用程序可以處理特殊的URL協議。

Mac:注冊 URL Scheme。當用戶在瀏覽器中訪問你的自定義URL Scheme的鏈接的時候,操作系統就會打開你的程序,響應這個請求。
實現:
Windows
1.把以下內容記在文本中,並重命名為xxx.reg,雙擊運行。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\BingoLink]
@="URL:BingoLink Protocol"
"URL Protocol"="C:\\Program Files (x86)\\BingoSoft\\BingoLink\\BingoLink.exe"
 
[HKEY_CLASSES_ROOT\BingoLink\DefaultIcon]
@="C:\\Program Files (x86)\\BingoSoft\\BingoLink\\BingoLink.exe,1"
 
[HKEY_CLASSES_ROOT\BingoLink\shell]
@="open"
 
[HKEY_CLASSES_ROOT\BingoLink\shell\open]
@="open"
 
[HKEY_CLASSES_ROOT\BingoLink\shell\open\command]
@="\"C:\\Program Files (x86)\\BingoSoft\\BingoLink\\BingoLink.exe\" \"%1\""
PS:當然真正做時,這些注冊表信息是需要在安裝過程中添加的,而不是像我后面加。
2.測試例子
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
        <title>test</title>
</head>
<body >
     <a href="BingoLink://login?loginticket=11223344">點擊這里啟動程序</a>
</body>
</html>
Mac
由於Mac的原生桌面程序我並沒涉獵,但是查看QQ的info.plist,也知道是注冊 URL Scheme。
優點:
1.各種瀏覽器都支持,mac和windows都可以做。
2. 不會有安全性問題。 

附錄

1.js啟動本地程序。

var wsh = new ActiveXObject("WScript.shell");
var path = wsh.RegRead("HKEY_CLASSES_ROOT\\BingoLink\\URL Protocol")  + " --sign=11223344";
wsh.exec(path); //用run是不行的

 

參考文獻

1.http://blog.csdn.net/qq_25867649/article/details/52189412 【ActiveX控件

2.http://blog.csdn.net/jackychen_king/article/details/7743811 【通過自定義URL協議在Web中啟動本地應用程序】

3.http://cocoa.venj.me/blog/custom-url-scheme-on-mac-and-ios/ 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM