js調(diào)用本地exe程序的兩種方式小結(jié)
js調(diào)用本地exe程序
第一種方法:就是 url protocol 的方式來實現(xiàn)
用這種方式實現(xiàn),任何瀏覽器都兼容,不會存在只有IE或FIREFOX才行的情況。
都用過QQ,迅雷,電驢,在網(wǎng)頁上點擊的時候,就會彈出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\" "
保存內(nèi)容為 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調(diào)用本地exe并傳入?yún)?shù)
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不了參數(shù),即exe程序接收不到參數(shù),將%1改為%L即可
- 如果要傳遞多個參數(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;
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解js如何優(yōu)雅處理后端返回的單元格數(shù)據(jù)
這篇文章主要為大家詳細介紹了JavaScript如何優(yōu)雅處理后端返回的單元格數(shù)據(jù),文中的示例代碼講解詳細,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10js與jquery實時監(jiān)聽輸入框值的oninput與onpropertychange方法
這篇文章主要介紹了js與jquery實時監(jiān)聽輸入框值的oninput與onpropertychange方法,實例分析了oninput與onpropertychange實現(xiàn)下拉框里自動匹配關(guān)鍵字實時監(jiān)聽文本框value值變化的功能,需要的朋友可以參考下2015-02-02重構(gòu)Javascript代碼示例(重構(gòu)前后對比)
回顧頭來看看那些Javascript腳本,有寫得不太理想,過于復(fù)雜?,F(xiàn)抽取出來,重構(gòu)它們,想學(xué)習(xí)javascript重構(gòu)的朋友可以參考下啊,網(wǎng)本文可以幫助你的2013-01-01DVA框架統(tǒng)一處理所有頁面的loading狀態(tài)
dva 有一個管理 effects 執(zhí)行的 hook,并基于此封裝了 dva-loading 插件。下面通過本文給大家分享DVA框架統(tǒng)一處理所有頁面的loading狀態(tài),感興趣的朋友一起看看吧2017-08-08js 數(shù)字、字符串、布爾值的轉(zhuǎn)換方法(必看)
下面小編就為大家?guī)硪黄猨s 數(shù)字、字符串、布爾值的轉(zhuǎn)換方法(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04js遍歷map javaScript遍歷map的簡單實現(xiàn)
下面小編就為大家?guī)硪黄猨s遍歷map javaScript遍歷map的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08