js調用本地exe程序的兩種方式小結
js調用本地exe程序
第一種方法:就是 url protocol 的方式來實現(xiàn)
用這種方式實現(xiàn),任何瀏覽器都兼容,不會存在只有IE或FIREFOX才行的情況。
都用過QQ,迅雷,電驢,在網頁上點擊的時候,就會彈出QQ,或者迅雷,電驢的下載界面,用的就是這個原理
在微軟的MSDN上也有說明:http://msdn.microsoft.com/en-us/library/aa767914%28v=vs.85%29.aspx
在這里,做一個簡單的例子
第一步:先要寫入注冊表,先注冊URL PROTOCOL, 在windows 下就是注冊表:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\myprotocol] @="myprotocol Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\myprotocol\DefaultIcon] @="C:\\WINDOWS\\NOTEPAD.EXE" [HKEY_CLASSES_ROOT\myprotocol\shell] @="" [HKEY_CLASSES_ROOT\myprotocol\shell\open] @="" [HKEY_CLASSES_ROOT\myprotocol\shell\open\command] @="\"C:\\WINDOWS\\NOTEPAD.EXE\" "
保存內容為 reg文件(myprotocol.reg),然后執(zhí)行,就加入注冊表,注冊了這個名字為myprotocol 的協(xié)議.
第二步:測試頁面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ? ? <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body> <div> ? ? <a href="myprotocol://D:\cmt-static\myprotocol.reg" rel="external nofollow" > ? ? ? ? 執(zhí)行可執(zhí)行文件 ? ? </a> </div> </body> </html>
js利用URL Protocol調用本地exe并傳入參數
1.自定義URL Protocol 協(xié)議
兩種方式
第一種:直接修改注冊表
開始 => 運行
HKEY_CLASSES_ROOT
新建項目
第二種:編寫注冊表信息,執(zhí)行即可
創(chuàng)建一個文件
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Webshell] @=“URL:Webshell Protocol Handler” “URL Protocol”="" [HKEY_CLASSES_ROOT\Webshell\DefaultIcon] @=“D:\workspace\test\system\tools\Call_Printer\trunk\code\Printer\Debug\Printer.exe” [HKEY_CLASSES_ROOT\Webshell\shell] [HKEY_CLASSES_ROOT\Webshell\shell\open] [HKEY_CLASSES_ROOT\Webshell\shell\open\command] @="“D:\workspace\test\system\tools\Call_Printer\trunk\code\Printer\Debug\Printer.exe” “%1"”
這里說明一點
- 如果上面?zhèn)鬟f不了參數,即exe程序接收不到參數,將%1改為%L即可
- 如果要傳遞多個參數,自定義傳入分隔符,傳到應用程序自己解析即可。
2.Web端調用方法
3.EXE處理接收到的參數
如果是上圖web測試代碼,則接收到的數據為:WebPrinter:21/560e7cfde165449fb56a92dede3d0003a958 字符串,之后自己處理即可
4.EXE程序打包
我這里使用inno打包,只需要加上下面這段即可
Inno Setup 寫入注冊表的代碼如下:
[Registry] Root: HKCR; SubKey: WebPrinter; ValueData: “WebPrinter Protocol”; ValueType: string; Flags: CreateValueIfDoesntExist UninsDeleteKey; Root: HKCR; SubKey: WebPrinter; ValueName: “URL Protocol”; Flags: CreateValueIfDoesntExist; ValueType: string; Root: HKCR; SubKey: WebPrinter\DefaultIcon; ValueData: {app}\Printer.exe; Flags: CreateValueIfDoesntExist; ValueType: string; Root: HKCR; SubKey: WebPrinter\shell\open\command; ValueData: “{app}\Printer.exe “”%L”""; Flags: CreateValueIfDoesntExist; ValueType: string;
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
js與jquery實時監(jiān)聽輸入框值的oninput與onpropertychange方法
這篇文章主要介紹了js與jquery實時監(jiān)聽輸入框值的oninput與onpropertychange方法,實例分析了oninput與onpropertychange實現(xiàn)下拉框里自動匹配關鍵字實時監(jiān)聽文本框value值變化的功能,需要的朋友可以參考下2015-02-02DVA框架統(tǒng)一處理所有頁面的loading狀態(tài)
dva 有一個管理 effects 執(zhí)行的 hook,并基于此封裝了 dva-loading 插件。下面通過本文給大家分享DVA框架統(tǒng)一處理所有頁面的loading狀態(tài),感興趣的朋友一起看看吧2017-08-08js遍歷map javaScript遍歷map的簡單實現(xiàn)
下面小編就為大家?guī)硪黄猨s遍歷map javaScript遍歷map的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08