js調(diào)用本地exe程序的兩種方式小結(jié)
js調(diào)用本地exe程序
第一種方法:就是 url protocol 的方式來實(shí)現(xiàn)
用這種方式實(shí)現(xiàn),任何瀏覽器都兼容,不會(huì)存在只有IE或FIREFOX才行的情況。
都用過QQ,迅雷,電驢,在網(wǎng)頁上點(diǎn)擊的時(shí)候,就會(huì)彈出QQ,或者迅雷,電驢的下載界面,用的就是這個(gè)原理
在微軟的MSDN上也有說明:http://msdn.microsoft.com/en-us/library/aa767914%28v=vs.85%29.aspx
在這里,做一個(gè)簡單的例子
第一步:先要寫入注冊表,先注冊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\" "
保存內(nèi)容為 reg文件(myprotocol.reg),然后執(zhí)行,就加入注冊表,注冊了這個(gè)名字為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調(diào)用本地exe并傳入?yún)?shù)
1.自定義URL Protocol 協(xié)議
兩種方式
第一種:直接修改注冊表
開始 => 運(yùn)行
HKEY_CLASSES_ROOT
新建項(xiàng)目
第二種:編寫注冊表信息,執(zhí)行即可
創(chuàng)建一個(gè)文件
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"”
這里說明一點(diǎn)
- 如果上面?zhèn)鬟f不了參數(shù),即exe程序接收不到參數(shù),將%1改為%L即可
- 如果要傳遞多個(gè)參數(shù),自定義傳入分隔符,傳到應(yīng)用程序自己解析即可。
2.Web端調(diào)用方法
3.EXE處理接收到的參數(shù)
如果是上圖web測試代碼,則接收到的數(shù)據(jù)為: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;
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解js如何優(yōu)雅處理后端返回的單元格數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了JavaScript如何優(yōu)雅處理后端返回的單元格數(shù)據(jù),文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10JavaScript實(shí)現(xiàn)頁面中錄音功能的方法
這篇文章主要給大家介紹了關(guān)于JavaScript實(shí)現(xiàn)頁面中錄音功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06js與jquery實(shí)時(shí)監(jiān)聽輸入框值的oninput與onpropertychange方法
這篇文章主要介紹了js與jquery實(shí)時(shí)監(jiān)聽輸入框值的oninput與onpropertychange方法,實(shí)例分析了oninput與onpropertychange實(shí)現(xiàn)下拉框里自動(dòng)匹配關(guān)鍵字實(shí)時(shí)監(jiān)聽文本框value值變化的功能,需要的朋友可以參考下2015-02-02重構(gòu)Javascript代碼示例(重構(gòu)前后對(duì)比)
回顧頭來看看那些Javascript腳本,有寫得不太理想,過于復(fù)雜?,F(xiàn)抽取出來,重構(gòu)它們,想學(xué)習(xí)javascript重構(gòu)的朋友可以參考下啊,網(wǎng)本文可以幫助你的2013-01-01DVA框架統(tǒng)一處理所有頁面的loading狀態(tài)
dva 有一個(gè)管理 effects 執(zhí)行的 hook,并基于此封裝了 dva-loading 插件。下面通過本文給大家分享DVA框架統(tǒng)一處理所有頁面的loading狀態(tài),感興趣的朋友一起看看吧2017-08-08js 數(shù)字、字符串、布爾值的轉(zhuǎn)換方法(必看)
下面小編就為大家?guī)硪黄猨s 數(shù)字、字符串、布爾值的轉(zhuǎn)換方法(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-04-04js遍歷map javaScript遍歷map的簡單實(shí)現(xiàn)
下面小編就為大家?guī)硪黄猨s遍歷map javaScript遍歷map的簡單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08