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)文章
three.js 實現(xiàn)露珠滴落動畫效果的示例代碼
這篇文章主要介紹了three.js 實現(xiàn)露珠滴落動畫效果的示例代碼,非常不錯,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
Bootstrap學(xué)習(xí)系列之使用 Bootstrap Typeahead 組件實現(xiàn)百度下拉效果
這篇文章主要介紹了Bootstrap學(xué)習(xí)系列之使用 Bootstrap Typeahead 組件實現(xiàn)百度下拉效果的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-07-07
關(guān)于小程序優(yōu)化的一些建議(小結(jié))
這篇文章主要介紹了關(guān)于小程序優(yōu)化的一些建議(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
解決JS內(nèi)存泄露之js對象和dom對象互相引用問題
這篇文章主要介紹了解決JS內(nèi)存泄露之js對象和dom對象互相引用問題,需要的朋友可以參考下2017-06-06
微信小程序開發(fā)數(shù)據(jù)緩存基礎(chǔ)知識辨析及運用實例詳解
這篇文章主要介紹了微信小程序開發(fā)數(shù)據(jù)緩存基礎(chǔ)知識辨析及運用實例詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
強(qiáng)大的JavaScript響應(yīng)式圖表Chartist.js的使用
本篇文章主要介紹了強(qiáng)大的JavaScript響應(yīng)式圖表Chartist.js的使用,具有一定的參考價值,有興趣的可以了解一下2017-09-09

