首页 > 其他分享 >【web】自定义协议Protocol URL

【web】自定义协议Protocol URL

时间:2022-12-04 01:44:49浏览次数:36  
标签:openIE web Protocol 自定义 URL %% CLASSES ROOT

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

标签:openIE,web,Protocol,自定义,URL,%%,CLASSES,ROOT
From: https://www.cnblogs.com/webenh/p/16949281.html

相关文章

  • web调用本地exe应用程序并传入参数
    1、exe创建注册表2、web启动exe,并传真userId3、exe取得服务器授权sig4、web取得推流地址:'http://v.ju918.com/live/26185_21639.m3u8'从网页中通过自定义URLProtocol......
  • zabbix监控项中的自定义时间
    在zabbix监控项里面可以设置自定义时间,格式如下zabbix自定义时间间隔wd1-7h5-22m/5周一到周日,每天5点到22点,每隔5分钟执行一次h9,10m10-40/30每天9点......
  • Springboot 使用 Async (内置线程池)执行异步任务(对比WebAsyncTask的使用)
    使用Async执行异步任务@SpringBootApplication@EnableAsyncpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Applicati......
  • Spring @WebFilter 注解定义过滤器
    @Slf4j@Order(1)@WebFilter(filterName="myFilter",urlPatterns={"/asyncResultGet/*"},initParams={@WebInitParam(name="author",value="Jaemon")})publicc......
  • Java8中Collectors求和功能的自定义扩展
    业务中需要将一组数据分类后收集总和,原本可以使用Collectors.summingInt(),但是我们的数据源是BigDecimal类型的,而Java8原生只提供了summingInt、summingLong、summingDouble......
  • WEB IDE Code Server 安装及使用
    概述Coder是VSCode的WebIDE,分CodeServer和Coder,CodeServer安装在服务器上,Coder是一个WEB版的VSCode,但目前多数的VSCode插件无法使用。VSCode:https://code.visua......
  • web项目的开发--第一天
    如何分析需求、如何设计、编码实现、测试。用ssm架构实现CRM项目代码编写。CRM项目:关键是养成好的编程思想和编程习惯。技术架构视图层(view):展示数据,跟用户交互。......
  • arco design vue 表单自定义验证
    不知道为啥,官方文档里竟然没写...直接上代码template里<a-form-itemfield="repeatPassword":rules="[{validator:validateRepeatPassword,trigger:'change'}]"......
  • Dockerfile自定义镜像
    常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。而要自定义镜像,就必须先了解镜像的结构才行。1.镜像结构镜像是将应用程序及其需要的系统函......
  • 聊聊Web项目中的权限设计
    一般的Web项目中都少不了登录这个环节,登录之后就需要跳转到首页,并且根据当前用户的信息,获取到对应的菜单信息,可以操作的方法信息等等。这个只是针对于操作权限,至于数......