URL Protocol(自定义协议)可以让web页面调用本地exe程序,这个神奇的功能是怎么实现的呢?
URL Protocol
URL Protocol,没错就是标题里所说的自定义协议。这玩意儿大家最常见的比如迅雷、电驴等。我们平时在电影天堂下载电影的时候点击链接浏览器会启动本地迅雷进行下载。
下面是某部电影的下载链接浏览器检查元素后
<a href="thunder://QUFmdHA6Ly95Z2R5ODp5Z2R5OEB5ZzQ1Lm..."/>
这里的"thunder"就是url protocol。
chrome打开一个IE
往注册表注册
下面我们通过在chrome上打开一个IE,来演示用法
首先创建一个test.reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\openIE]
@="URL:openIE Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\openIE\DefaultIcon]
[HKEY_CLASSES_ROOT\openIE\shell]
[HKEY_CLASSES_ROOT\openIE\shell\open]
[HKEY_CLASSES_ROOT\openIE\shell\open\command]
@="cmd /c set m=%1 & call set m=%%m:openIE:=%% & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%% & exit"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
点击test.reg,在弹出框中选择是
Windows Registry Editor Version 5.00是注册表工具的版本信息,必须放在首行或文件开头的位置。
HKEY_CLASSES_ROOT下面添加一个openIE树,其中openIE的名称就对应着自定义URL Protocol的名称,在web中调用的时候需要这个名称;
@=“URL:openIE Protocol” 可以是任意字符串,在触发时产生提示信息
如果配置为空"",或直接不配置,则会提示
4.@="cmd /c set m=%1 & call set m=%%m:openIE:=%% & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%% & exit"
cmd:表示以cmd命令行调用ie,瞬间会有黑色的命令行框出现。
call:批处理语法,和start命令都可以用在这个地方。
形式为
set m=%%m:openIE:=%% : 应该是从后面页面处截取参数信息。比如
取得的值是http://a.com.cn。
C:\\Program Files\\Internet Explorer\\iexplore.exe: IE的安装路径。
%1 :表示携带的参数;后面在html触发时,会传递url给ie,否则,ie会仅打开空白页。
这个参数等价于在ie快捷方式 目标后添加一个url,那么默认页就是这个url。
exit :类似bat批处理中的exit语法,退出cmd。但是如果不加该参数,那么会重复打开一个IE并关闭,造成死循环效果,不知道是何原因。
上面代码貌似可以直接配置成
C:\Program Files\Internet Explorer\iexplore.exe “%1” exit
但是目前出的问题是%1这个参数没生效,老是打开空白页,有待研究。
HTML测试
手动创建一个test.html文件
<html>
<head>
<script type="text/javascript">
function clickRadio() {
window.location.href = "openIE:http://a.com.cn";
}
</script>
</head>
<body>
<input type="button" onclick="clickRadio()" value="Click button" />
</body>
</html>
————————————————
版权声明:本文为CSDN博主「云川之下」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_45406092/article/details/105227147
本博客Android APP 下载 |
![]() |
支持我们就给我们点打赏 |
![]() |
支付宝打赏 支付宝扫一扫二维码 |
![]() |
微信打赏 微信扫一扫二维码 |
![]() |
如果想下次快速找到我,记得点下面的关注哦!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2016-12-04 .NET Core 跨平台发布(dotnet publish)
2016-12-04 Asp.Net Core 发布和部署(Linux + Jexus )