2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 在Chrome或者火狐浏览器中点击链接 自动打开IE浏览器跳转到指定页面并传递参数

在Chrome或者火狐浏览器中点击链接 自动打开IE浏览器跳转到指定页面并传递参数

时间:2023-08-29 16:01:05

相关推荐

在Chrome或者火狐浏览器中点击链接 自动打开IE浏览器跳转到指定页面并传递参数

需求:

在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://?a=1" />test

运行结果:打开IE浏览器并传递参数a成功!

阶段二:传递多个参数

测试链接:

<a href="alert://?a=1&b=2" />test

运行结果:参数b传递失败!解决过程:修改alert.reg

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

运行结果:参数b传递依然失败!

原因分析:

set m=%1,此处%1会直接替换成

alert://?a=1&b=2,&符号将之分为两个命令,m=alert://?a=1和b=2

看来特殊符号&是无法直接传递了,于是想到了用自定义的分隔字符串separator来替代&符号,并在传递给IE前,将其替换回&符号。

解决过程:修改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://?a=1separatorb=2" />test

运行效果:参数b传递成功!

本以为可以功成身退了,却发现个诡异的现象。

第一次点击测试链接OK,不关闭IE的情况下再次点击链接,新弹出的IE地址有误,效果如下:

地址栏变为了:http://%22///?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的值变为了"///?a=1&b=2 "

看来问题出在双引号上,但因为包含特殊字符&,此处必需使用双引号。

尝试各种写法未果,后经培高人指点,将具体的操作写到bat文件中,在此处调用该bat。

在C:\Program Files\WisoftAlert目录下新建alert.bat

@echo offset 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文件

解压路径需与alert.reg中一致

解压后自动运行runreg.bat,写入注册表信息

静默执行

重要!!!三个文件夹总结!!!

1.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 & \"C:\\Program Files\\WisoftAlert\\alert.bat\" %%m%% & exit"

2.alert.bat

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

3.runref.bat

REGEDIT /alert.reg

到此就可以正常使用了,其实还可以进一步优化(想试的可以试试)

阶段四:链接中直接使用&符号

解决过程:

1.修改alert.bat

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

2.修改alert.reg,将参数%1用双引号引起来

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

测试链接:

<a href="alert://?a=1&b=2" />test

测试成功!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。