网页(浏览器)调用本地exe应用软件 |
您所在的位置:网站首页 › 浏览器如何打开url文件 › 网页(浏览器)调用本地exe应用软件 |
1. 背景
为什么要学习网页调用本地exe?因为项目有一个需求,就是通过页面的按钮,点击调用本地的GUWP(exe软件),使其可以直接登录和打开。 而exe应用软件,它只能通过cmd进行操作和数据的传递。 2. 通过网络协议进行和exe通信通过注册表reg文件,将网络协议(guwp://....)注入到注册表中,通过url的命令,直接启动本地exe软件。比如QQ或者百度网盘等,如果你机器本地已经有exe了,在网页上会直接去把你机器本地的exe给调起来。 2.1. exe软件exe软件代码(需要pyrthom依赖)【guwp.exe文件放在附录】 import sys from tkinter import messagebox def mmain(args:list): if len(args) > 0: messagebox.showinfo("提示", "您的参数为:{}".format(args)) else: messagebox.showinfo("提示", "您一个参数都没有。。。") if __name__ == '__main__': # print(sys.argv) mmain(sys.argv[1:])将python代码打包成exe文件 打开cmd,输入:pip install pyinstaller,安装打包软件。 进入存放guwp.py的文件夹下(D:\test),通过地址栏输入:cmd 在guwp.py的文件下打开cmd,输入:pyinstaller -F "guwp.py" 打包好exe软件,会在dist文件夹下(D:\test\dist)生成exe文件。 复制到测试文件下(D:\guwp) 打开cmd,输入:D:\guwp\guwp.exe 11111111111111111 exe软件执行成功,会出现提示框,并且展示输入的参数内容。 2.2. reg注册文件reg注册文件代码【guwp.reg文件放在附录】 若要执行其他exe文件,只需修改上面的本地路径(D:\\guwp\\guwp.exe) 若想接收参数,在最后一行的格式定义上加上“%1”,这个字符串代表可以接收参数。 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\guwp] "URL Protocol"="D:\\guwp\\guwp.exe" @="guwProtocol" [HKEY_CLASSES_ROOT\guwp\DefaultIcon] @="D:\\guwp\\guwp.exe" [HKEY_CLASSES_ROOT\guwp\shell] [HKEY_CLASSES_ROOT\guwp\shell\open] [HKEY_CLASSES_ROOT\guwp\shell\open\command] @="\"D:\\guwp\\guwp.exe\" %1"若想不接收参数,可直接不写 @="\"D:\\guwp\\guwp.exe\"网络协议的生效只和注册表的路径名称有关!比如下面路径(HKEY_CLASSES_ROOT\guwp1) Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\guwp1] "URL Protocol"="D:\\guwp\\guwp.exe" @="guwProtocol" [HKEY_CLASSES_ROOT\guwp1\DefaultIcon] @="D:\\guwp\\guwp.exe" [HKEY_CLASSES_ROOT\guwp1\shell] [HKEY_CLASSES_ROOT\guwp1\shell\open] [HKEY_CLASSES_ROOT\guwp1\shell\open\command] @="\"D:\\guwp\\guwp.exe\" %1"点击guwp.reg将URL Protocl注入注册表中 检查注册表中是否存在guwp的这个网络协议,打开win+R,输入:regedit,打开注册表编辑器。 测试guwp协议是否注册成功,在URL栏输入:guwp://111111111111 回车enter,就会出现要打开guwp.exe 就能够调用本地的exe软件,并且将参数传入到exe软件中。 这个通过网络协议的参数传递是带有guwp://格式的,和通过cmd启动exe的参数形式不一样。 3. 前端调用cmd前端可以通过js代码直接获取本地计算器权限,调用cmd执行代码,这是功能只能在ie浏览器进行,其他浏览器不支持。 JAVAscript执行cmd代码 var cmd = new ActiveXObject("WScript.Shell"); cmd.run("D:\\guwp\\guwp.exe 11111111111111111");");执行这段代码,需要打开ie浏览器的权限功能,重新启动ie。 打开ie浏览器的开发工具,进入控制台,输入js代码。 点击运行,会出现执行guwp文件提示。 点击允许,这就是直接执行cmd命名,调用gwup.exe。 注意:这个功能方法虽然可以通过前端调用cmd,执行exe软件,但是有个严重的安全问题,就是网页可以通过cmd获取到你的计算权限,如果他人要是执行文件清除等命令,后果不堪设想。所以一般禁止使用这个功能,使用网络协议调用本地的exe软件,才是正确的方法。 4. 附件4.1. 代码附带文件 reg注册文件(去掉.txt),exe软件代码(去掉.txt) 【鄙视不支持txt文件上传】 链接:https://pan.baidu.com/s/1xSuObg5qf1_oeEMhwxommQ 提取码:vkju 4.2. 素材来源 浏览器调用本地exe(应用程序)方法--链接网页:如何调用本地EXE文件--链接python中用pyinstaller工具打包exe--链接JAVAscript怎么执行cmd命令--链接 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |