chrome 打开IE 并且传多个参数‘

本文详细介绍了如何通过修改注册表和创建批处理文件,在Chrome浏览器中点击链接来启动IE浏览器并传递参数。首先,通过注册URLProtocol实现从Chrome到IE的跳转,然后逐步解决传递多个参数的问题,最后通过创建自解压包方便用户操作。过程中涉及注册表编辑、批处理脚本编写和文件打包等技术。
摘要由CSDN通过智能技术生成

需求: 在Chrome浏览器中点击链接,打开IE浏览器,跳转到指定页面并传递参数

过程:
一些应用软件可以通过点击URL链接启动并执行操作(例如迅雷),这是如何做到的呢?
主要是通过修改注册表,注册URL Protocol。

阶段一:点击链接,打开IE浏览器,并传递单个参数
新建 alert.reg


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\alert]
@="URL: Alert Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\alert\DefaultIcon]
@="iexplore.exe,1"

[HKEY_CLASSES_ROOT\alert\shell]

[HKEY_CLASSES_ROOT\alert\shell\open]

[HKEY_CLASSES_ROOT\alert\shell\open\command]
@=" cmd /c set m=%1 & call set m=%%m:alert:=%% & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%%"

注释:
set m=%1(%1为传递过来的参数,将其赋给变量m)
set m=%%m:alert:=%% (将前缀alert: 清除)
“C:\Program Files\InternetExplorer\iexplore.exe” %%m%% (打开IE 浏览器并跳转到指定页面)
测试链接:

<a href="alert://www.baidu.com?a=1" />test
  •  

打开IE浏览器并传递参数a成功!

阶段二:传递多个参数
测试链接:

<a href="alert://www.baidu.com?a=1&b=2" />test

参数b传递失败

修改alert.reg


[HKEY_CLASSES_ROOT\alert\shell\open\command]
@="cmd /c set m=%1 & call set m=%%m:alert:=%% & call set m=\"%%m:separator=&%%\" & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%%"

测试链接:

<a href="alert://www.baidu.com?a=1separatorb=2" />test

参数b传递成功!

本以为可以功成身退了,却发现个诡异的现象。
第一次点击测试链接OK,不关闭IE的情况下再次点击链接,新弹出的IE地址有误,效果如下:

地址栏变为了:http://%22//www.baidu.com/?a=1&b=2%20%20"
修改alert.reg

[HKEY_CLASSES_ROOT\alert\shell\open\command]
@="cmd /c set m=%1 & call set m=%%m:alert:=%% & call echo 第一次替换:%%m%% & call set m=\"%%m:separator=&%%\" & call echo 第二次替换:%%m%% & call \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" %%m%%"

原因分析:

执行m="%%m:separator=&%%“后,m的值变为了”//www.baidu.com/?a=1&b=2 "
看来问题出在双引号上,但因为包含特殊字符&,此处必需使用双引号。
尝试各种写法未果,后经培高人指点,将具体的操作写到bat文件中,在此处调用该bat。
在C:\Program Files\WisoftAlert目录下新建alert.bat

 

@echo off
set m=%m:alert:=%
set m="%m:separator=&%"
start "" "C:\\Program Files\\Internet Explorer\\iexplore.exe" %m%
exit

修改alert.reg

[HKEY_CLASSES_ROOT\alert\shell\open\command]
@="cmd /c set m=%1 & \"C:\\Program Files\\WisoftAlert\\alert.bat\" %%m%% & exit"

阶段三:方便用户操作
新建runreg.bat,自动注册协议

REGEDIT /S alert.reg

通过WinRAR将alert.reg,alert.bat,runreg.bat打包成exe文件

这个上百度自行搜索“WinRAR,自解压”
解压路径需与alert.reg中一致
解压后自动运行runreg.bat,写入注册表信息
静默执行
阶段四:链接中直接使用&符号
修改alert.reg,将参数%1用双引号引起来

[HKEY_CLASSES_ROOT\alert\shell\open\command]
@="\"C:\\Program Files\\WisoftAlert\\alert.bat\" \"%1\""

修改alert.bat

@echo off
set m=%1%
set m=%m:alert:=%
start "" "C:\\Program Files\\Internet Explorer\\iexplore.exe" %m%
exit

转载来自http://www.voidcn.com/article/p-dzwsyzqq-bwy.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值