我现在想在网页调用本地exe程序,现在浏览器可以支持这个吗?请教一下懂的同学,如何调取?
根据几位答主与参考网上的答案:通过注册表自定义协议,网页可以调用本地exe.
1.添加注册表
注册表内容如下:
Windows Registry Editor Version 5.00
;CallBSEXEPrint表示自定义的URL Protocol协议名称
[HKEY_CLASSES_ROOT\CallBSEXEPrint]
@="URL: CallBSEXEPrint Protocol Handler"
"URL Protocol"=""
;E:\\localExe\\gy_print.exe 为本地EXE路径
[HKEY_CLASSES_ROOT\CallBSEXEPrint\DefaultIcon]
@="E:\\localExe\\gy_print.exe"
[HKEY_CLASSES_ROOT\CallBSEXEPrint\Shell]
[HKEY_CLASSES_ROOT\CallBSEXEPrint\Shell\Open]
;如果该本地EXE有参数可以在exe后加参数:@="\"E:\\localExe\\gy_print.exe\" %1"
;如果没有参数:@="E:\\localExe\\gy_print.exe "
[HKEY_CLASSES_ROOT\CallBSEXEPrint\Shell\Open\Command]
@="\"E:\\localExe\\gy_print.exe\" %1"
将上面的文字保存文件,并改为.reg结尾的文件,然后双击,会自动注册到注册表。
2.测试网页调用:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body style="display: flex;justify-content:center;">
<!-- 36为传递给exe的参数 -->
<a href="CallBSEXEPrint://36">调用exe,并传参</a>
<a href="CallBSEXEPrint://">调用exe,不传参</a>
</body>
</html>
测试结果:
但是我想传给exe的参数其实是:E:\localExe\36.xlt,类似下面:
但是通过协议打开的却是传递的是C盘的参数,路径错误,不知道怎么回事?
不能直接运行
.exe
程序,但是可以通过URL Scheme
去唤起系统中已经存在的应用。比如说以前的点击分享到QQ这种实现方式。但是前提条件是电脑上面的应用有在注册表注册对应的
APP Scheme
。具体可以参考古早我的这篇笔记,里面有提到过这个方式,也可以直接点击查看微软提供的文档 Registering an Application to a URI Scheme (Windows) | Microsoft Learn
最好是你们内部开发这个PC应用程序的人去配合你,在安装的时候就直接注册好。
不然每一台都去手动改注册表或者提供脚本给他们然后双击运行实在是太麻烦了,而且很多公司配发的电脑都是受控域账户就更加麻烦。