js利用URL Protocol调用本地exe并传入参数

1.自定义URL Protocol 协议

两种方式

第一种:直接修改注册表

开始 => 运行
js利用URL Protocol调用本地exe并传入参数_第1张图片
HKEY_CLASSES_ROOT
新建项目
js利用URL Protocol调用本地exe并传入参数_第2张图片
js利用URL Protocol调用本地exe并传入参数_第3张图片
js利用URL Protocol调用本地exe并传入参数_第4张图片

第二种:编写注册表信息,执行即可

创建一个文件
在这里插入图片描述
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"”

这里说明一点
如果上面传递不了参数,即exe程序接收不到参数,将%1改为%L即可
如果要传递多个参数,自定义传入分隔符,传到应用程序自己解析即可。

2.Web端调用方法

js利用URL Protocol调用本地exe并传入参数_第5张图片

3.EXE处理接收到的参数

js利用URL Protocol调用本地exe并传入参数_第6张图片
如果是上图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;

你可能感兴趣的:(windows,URL,Protocol,js调用exe)