浏览器打开exe文件并传递参数

最近做到一个需求,web端需要调用第三方exe,刚开始尝试在后端打开,vs运行没毛病,部署到IIS就歇菜了,网上查了下,说是要设置IIS权限,摆弄下了没什么用,就放弃了,决定浏览器打开exe,以此记录下

1.写注册表

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\OpenExe]
@="OpenExe Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\OpenExe\shell]
@=""

[HKEY_CLASSES_ROOT\OpenExe\shell\open]
@=""

[HKEY_CLASSES_ROOT\OpenExe\shell\open\command]
@="D:\\ExeDemo\\DoExe.bat %1"

2.写bat文件  

 

start D:\\ExeDemo\\LocalExe.exe  %2 %3 %4

此处 %2 %3 %4表示传三个参数给exe

3.前端调用    

<el-button type="primary" @click="doexe()">打开</el-button>
doexe (){
  var url = 'OpenExe:/,param1,param2,param3'
  window.open(url, '_blank')
},

 注意这里的OpenExe要和注册表里的名称对应,传递参数这块,我自己是这样传,并且能成功接收

        

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
各位朋友做协议时应该见过如下url: tencent://message/?uin=88888Site=bbs.125.laMenu=yes 复制代码 在浏览器打开这个连接,会唤起qq的聊天窗口,并且根据传递的参数88888,打开了与88888的强制聊天窗口,如下图: 又比如打开浏览器,输入 steam://install/943700 复制代码 居然会唤起steam的安装界面,安装某个游戏。 是否想知道他们是如何实现的呢? 通过注册表中的探索,发现了秘密: 导出注册表查看: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\steam] @="URL:steam protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\steam\DefaultIcon] @="Steam.exe" [HKEY_CLASSES_ROOT\steam\Shell] [HKEY_CLASSES_ROOT\steam\Shell\Open] [HKEY_CLASSES_ROOT\steam\Shell\Open\Command] @="\"C:\\Program Files (x86)\\Steam\\Steam.exe\" -- \"%1\"" 原来是在这里的定义了私有协议,我们依葫芦画瓢,来定义一个自己的私有协议“Mofei”吧。 构造一个注册表: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Mofei] @="URL:Mofei Protocol Handler" "URL Protocol"="" [HKEY_CLASSES_ROOT\Mofei\shell] [HKEY_CLASSES_ROOT\Mofei\shell\open] [HKEY_CLASSES_ROOT\Mofei\shell\open\command] @="C:\\Users\\Administrator\\Desktop\\test.exe \"%1\"" 以上代码中"Mofei"为需要注册的协议名,例如Tencent/steam。 下面的 HKEY_CLASSES_ROOT\Mofei\shell\open\command的键值“ C:\\Users\\Administrator\\Desktop\\test.exe ”为要处理的程序的路径。 可以将以上代码通过记事本保存为xx.reg,双击此注册表文件导入。也可以通过精易模块 自行操作注册表来创建表项和键值。 此一步的目的是告诉windows,假如计算机请求的url是以"mofei://"为开头,就交给注册表中用户自定义的程序来处理,且整个请求的url内容作为启动参数,传递给应用程序。 例如在你的浏览器打开 "mofei://hahaha",此时windows将会启动我们设定的test.exe程序,并且将"mofei://hahaha"作为启动参数传递给test.exe。 现在我们启动易语言 ,新建一个空白无窗口程序,写下如下代码: 窗口程序集名 保 留 保 留 备 注 程序集1 子程序名 返回值类型 公开 备 注 _启动子程序 整数型 请在本子程序中放置动态链接库初始化代码 变量名 类 型 静态 数组 备 注 aa 文本型 0 取命令行 ( aa) 信息框 ( aa[ 1] , 0, ,) 返回 ( 0) ' 返回值被忽略。 将程序编译为test.exe,放置到桌面上(我们事先定义的路径)。 现在,我们打开任意浏览器(大部分浏览器都支持私有协议),输入我们注册的"mofei://hahaha",处于安全考虑,首次使用新注册的私有协议时浏览器程序会先询问是否允许,选择允许即可。 于是,你看到了如下界面,此时我们自己注册的私有协议就成功的拉起了我们的程序。 firefox和chrome都可以哦: 现在,我们可以取出参数供我们的程序使用。 窗口程序集名 保 留 保 留 备 注 程序集1 子程序名 返回值类型 公开 备 注 _启动子程序 整数型 请在本子程序中放置动态链接库初始化代码 变量名 类 型 静态 数组 备 注 aa 文本型 0 取命令行 ( aa) 信息框 ( 取文本中间 ( aa[ 1] , 9,取文本长度 ( aa[ 1] ) - 9) , 0, ,) 返回 ( 0) ' 返回值被忽略。 用firefox来看一下执行结果。 个别浏览器会对传入的中文参数进行url编码,例如chrome,如果你的程序中未判断参数编码,就会造成如下状况,如下演示: 不止是浏览器可以唤起,连windows的资源管理器也可以唤起哦。 甚至连易语言也可以唤起哦。 方
重写 支持库说明: 本次更新完全使用C语言重写 ,相比易语言, 稳定性提升 ,速度提升 , C语言原生调用,带来原汁原味的快感。 【C语言支持库的好处】         原生调用,方法、函数、类型等即得即用,无需转换xx类型及读写内存。        指针、内存、回调统统搞定        cdcel与stdcall直接调用,无需自己实现转换,稳定性+100%        使用易语言官方提供的、有保障的头文件,错误率<0.1%直接编译生成动态库 fne,静态库lib,无需转换,安全稳定        超过数千行的源代码,完整重构        对原支持库的逻辑和结构进行优化 总结起来三个字: 稳     快     好 -------------------------------------------------------------------- miniblink内核dll更新迭代次数: 20次以上(距离上次易语言正式版支持库发布) 累计BUG修复 约:110+项 累计功能性改进约:170+项 再次感谢 miniblink作者的更新维护。 【性能提升】         启动速度提升:30%以上,xx经过打开到加载完毕时间统计获得。         操作响应速度提升明显。  在不特别复杂的网页逻辑下,响应速度提升明显。         动画速度与显示效果提升,使效果更加平滑。  具体可以参考组合框、颜色选择器等组件。 ------------------分割线 ---------------- 【更新日志】 【正式版】2020年11月25日 版本号: 1.6.1125 更新说明:         修复:                 *新窗口无法弹出的问题                 *ajax失效问题                 *修复新窗口无法挂接事件的问题                 *获取所有Cookie() 会崩溃的问题                 *修复新窗口创建失败的问题         新增:                 *新增一个事件, #浏览器事件_绘画事件, 浏览器发生重画时触发, 使用 挂接事件() 进行挂接         删除:                 *弃用支持库里所有对cookie进行二次封装的命令 , 所有cookie相关的命令都是原封调用node.dll                         设置cookie请调用 设置cookie_CURL(), 该命令原封调用node.dll的wkeSetCookie接口                         支持库所有cookie相关的命令都是原封调用node.dll, 不会做任何修改 【正式版】2020年11月24日 更新说明: 修复:                 *优化程序稳定性                 *修复几处已知的内存泄漏问题                 *修复 特殊功能.取post数据() 可能会崩溃的问题                 *修复WKE_填表 已知问题, 类内的方法基本都重写了                 *修复部分网页打开会崩溃问题                 *修复WKE_填表.post() url数据类型问题                 *获取HTTP头字段信息(), 参数key类型改为文本型                 *获取响应HTTP头字段信息(), 参数key类型改为文本型                 *调用DevTool(), 参数3不在内部进行编码, 传递的文本必须先转换成utf8在传递进去                 *优化启动速度                 *修复ajax.post 数据过长崩溃问题                 *修复取框架文本错误问题, 取网页源码支持获取指定框架了         新增:                 事件:                         *打开文件对话框, 全局事件, 只有第一个精易web浏览器组件收到此消息                         *保存文件对话框, 全局事件, 只有第一个精易web浏览器组件收到此消息                         *网页图标改变                 命令:                         *wke_消息循环, 此方法会屏蔽易语言自带的消息循环, 使得精易web浏览器组件能使用tab键切换焦点                         *wke

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值