【转载】Chrome使用自定义协议打开本地程序并运行IE打开网页
部分内容转载自: http://blog.sina.com.cn/s/blog_e2b8213a0102wqby.html
项目中遇到某需求:chorme要运行IE并打开网页。解决方案之一就是通过自定义协议来实现该需求。
在注册表中写入如下内容来进行自定义协议:
[HKEY_CLASSES_ROOT\openIE] @="URL:OpenIE Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\openIE\DefaultIcon] @="iexplore.exe,1" [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"
然后使用openIE协议,如《a href = “openIE:http://www.baidu.com”》点我使用外部协议运行IE打开百度《/a》进行访问百度。
但是这样会弹出cmd的命令框,给用户带来不好的体验。解决方法如下:
链接:http://pan.baidu.com/s/1sllgzxV 密码:ugpk
内容是一个可以解压的exe,解压后有三个文件:alert.reg 与上边的openie协议大同小异,将协议名称换成了alert。
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\\alert\\openIE.bat\" %%m%% & exit"
并且将command换成了bat文件,不再是直接打开ie。bat文件内容入下:
@echo off set m=%m:alert:=% set m="%m:separator=&%" start "" "C:\\Program Files\\Internet Explorer\\iexplore.exe" %m% exit
这些命令虽然写不出来,但是不妨碍我们读懂,将使用alert协议访问的地址作为参数进行处理,然后通过ie打开。
最后一个文件是runreg.bat,内容如下:
REGEDIT /S alert.reg
很显然作为exe,双击执行的就是这个regedit,将注册表写好的同时,也将openie.bat复制到了C:\Program Files\alert\路径下,虽然不知道它是如何实现的,但是不妨碍我进行改造处理。比如给换个路径,比如换一个执行程序(当然执行程序支持命令行参数启动)。
自定义协议可以帮助我们通过浏览器打开本地程序,当然不仅限于此。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」