博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows和Mac浏览器启动本地程序
阅读量:7154 次
发布时间:2019-06-29

本文共 1891 字,大约阅读时间需要 6 分钟。

前言

这几天有个需求,需要在IE上启动本地程序,就如下面一样。

一开始,我还以为IE有提供特殊的接口,类似上图中的“RunExe”,可以找了大半天觉得不对经(找不到该方法)。

后来想想不对,这种方式是ActiveX控件。

ActiveX控件基本概念

ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等。

ActiveX控件的后缀名是OCX或者DLL。一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动态库共存的文件,然后注册ocx文件。

ActiveX控件是基于com标准,使得软件部件在网络环境中进行交互的技术集。它与具体的编程语言无关。作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。同时,ActiveX技术也被用于方便地创建普通的桌面应用程序,此外ActiveX一般具有界面。

PS:使用ActiveX需要设置IE的安全级别,Internet选项-->安全-->自定义级别--> 对没有标记为安全的ActiveX控件进行初始化和脚本运行—>启用。

结论

所以就如启动QQ、迅雷,根本就不是用ActiveX控件,严格上讲,ActiveX控件已经是实现业务逻辑的可视化界面(类似Chrome的拓展程序),所以这种方式被抛弃,因为我是要启动本地一个程序,而不是一个“插件”。

自定义协议

就如果迅雷和QQ,可以用类似tencent://message,直接在页面启动程序。

做法:

Windows:在注册表添加一个新的key以及相关的value到HKEY_CLASSES_ROOT中,来使应用程序可以处理特殊的URL协议。

Mac:注册 URL Scheme。当用户在浏览器中访问你的自定义URL Scheme的链接的时候,操作系统就会打开你的程序,响应这个请求。
实现:
Windows
1.把以下内容记在文本中,并重命名为xxx.reg,双击运行。
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\BingoLink]@="URL:BingoLink Protocol""URL Protocol"="C:\\Program Files (x86)\\BingoSoft\\BingoLink\\BingoLink.exe" [HKEY_CLASSES_ROOT\BingoLink\DefaultIcon]@="C:\\Program Files (x86)\\BingoSoft\\BingoLink\\BingoLink.exe,1" [HKEY_CLASSES_ROOT\BingoLink\shell]@="open" [HKEY_CLASSES_ROOT\BingoLink\shell\open]@="open" [HKEY_CLASSES_ROOT\BingoLink\shell\open\command]@="\"C:\\Program Files (x86)\\BingoSoft\\BingoLink\\BingoLink.exe\" \"%1\""
PS:当然真正做时,这些注册表信息是需要在安装过程中添加的,而不是像我后面加。
2.测试例子
Mac
由于Mac的原生桌面程序我并没涉猎,但是查看QQ的info.plist,也知道是注册 URL Scheme。
优点:
1.各种浏览器都支持,mac和windows都可以做。
2. 不会有安全性问题。 

附录

1.js启动本地程序。

var wsh = new ActiveXObject("WScript.shell");var path = wsh.RegRead("HKEY_CLASSES_ROOT\\BingoLink\\URL Protocol")  + " --sign=11223344";wsh.exec(path); //用run是不行的

 

参考文献

1. 【ActiveX控件】

2. 【通过自定义URL协议在Web中启动本地应用程序】

3. 

分类: 
本文转自 海角在眼前 博客园博客,原文链接:http://www.cnblogs.com/lovesong/p/6501322.html
   ,如需转载请自行联系原作者
你可能感兴趣的文章
关于 Python 的升级,真不是那么好升的。。。
查看>>
JavaScript对象模型-执行模型
查看>>
Flex读取本地文件
查看>>
Java ConcurrentModificationException 异常分析与解决方案
查看>>
Python发送邮件
查看>>
贪吃蛇系列之十一——总结
查看>>
AT域名,什么是AT域名?
查看>>
my97DatePicker选择年、季度、月、周、日
查看>>
mysql 链接逐步调试
查看>>
ProgressDialog的简单应用,等待提示
查看>>
c3p0配置内容详解
查看>>
git常用命令
查看>>
SUSE系统中如何将本地软件包目录作为一个zypper源
查看>>
Spread Studio for Winform :实现编辑状态下文本居中
查看>>
2015年互联网女皇趋势报告中文版
查看>>
Styled PageControl
查看>>
Flip View
查看>>
监控 Linux 性能的 18 个命令行工具
查看>>
家庭理财
查看>>
aerospike命令
查看>>