2018.3.15更新
慚愧今天才看到這篇博客http://www.cnblogs.com/leslies2/p/3727762.html,寫的很贊,很全面,就是有點長,哈哈,不過看來搜索也是一門學問啊。
背景
最近做一個集成需求,我們是B/S架構的,對方是C/S架構的,對方直接扔過來一個EXE連OCX都沒有,讓我們調用,也就是說,我們需要通過js程序去調用他們的客戶端程序並傳入多個參數,當時內心是崩潰的,網上查了些資料,發現還真的可以!下面開始。原理
1.在注冊表中把需要調用的exe注冊一個調用協議 2.在瀏覽器中通過 標簽來直接調用設置注冊表調用協議
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Browser]
@=""
"URL Protocol"=""
[HKEY_CLASSES_ROOT\Browser\DefaultIcon]
@="D:\\MyCode\\learnTest\\RegisterURI\\wrapper.exe"
[HKEY_CLASSES_ROOT\Browser\Shell]
@=""
[HKEY_CLASSES_ROOT\Browser\Shell\Open]
@=""
[HKEY_CLASSES_ROOT\Browser\Shell\Open\Command]
@="D:\\MyCode\\learnTest\\RegisterURI\\wrapper.exe %1"
說明:
Browser:自定義的協議名稱;
D:\MyCode\learnTest\RegisterURI\wrapper.exe :調用的exe文件路徑;
%1 :代表傳入的參數;
以上內容可以直接保存到記事本里,修改為.reg文件,雙擊執行即可。
當然,也可以regedit直接進注冊表一級一級的設置,具體修改注冊表自行搜索。
文章末尾有demo可以下載參考。
效果如圖:

如何調用
1.一個 標簽即可: 測試調用EXE 2.使用JQuery創建a標簽調用: function send() {
var link = $('<a href="Browser:// 0000513082 R475323015"></a>');
$('body').append(link);
link.get(0).click();
link.remove();
}
說明:
(敲黑板~)此處重點,重點,重點
Browser:// 定義的注冊表協議名,會作為第一個參數傳入,多個參數用空格分割即可,看下圖,最后一個參數會自動添加/需要單獨處理。
執行效果:

參考鏈接
1.https://msdn.microsoft.com/en-us/library/aa767914.aspx#app_ex (msdn強烈推薦)
2.http://www.cnblogs.com/hwade/archive/2008/01/08/1029686.html
