Windows和Mac浏览器启动本地程序
前言
这几天有个需求,需要在IE上启动本地程序,就如下面一样。

一开始,我还以为IE有提供特殊的接口,类似上图中的“RunExe”,可以找了大半天觉得不对经(找不到该方法)。
后来想想不对,这种方式是ActiveX控件。
ActiveX控件基本概念
ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等。
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协议。
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\""
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body >
<a href="BingoLink://login?loginticket=11223344">点击这里启动程序</a>
</body>
</html>

附录
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.http://blog.csdn.net/qq_25867649/article/details/52189412 【ActiveX控件】
2.http://blog.csdn.net/jackychen_king/article/details/7743811 【通过自定义URL协议在Web中启动本地应用程序】
3.http://cocoa.venj.me/blog/custom-url-scheme-on-mac-and-ios/
Windows和Mac浏览器启动本地程序的更多相关文章
- Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid Ap ...
- 使用浏览器自定义协议启动本地程序(.EXE文件)
比如,自定义协议名称为 myapp,要启动的本地程序为 myapp.exe. 1)首先向注册表添加如下内容: Windows Registry Editor Version 5.00 [HKEY_CL ...
- 从浏览器启动应用程序 - Application URL
关键字:Browser,Application,URL Protocol,Windows,Mac,IE,Chrome,Safari. OS: Windows 7, OS X Yosemite. Win ...
- C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序
本教程适用于Windows系统 从浏览器上打开本地程序,主要用到了本地URL协议,其实主要就是改注册表 先建立一个项目,我建的是控制台项目 在Program.cs写2个静态方法用来添加注册表.移除注册 ...
- 如何通过写一个chrome扩展启动本地程序
@(编程) [toc] 本文介绍如何利用Chrome 的插件, 从我们的一个网站中启动一个我们的本地程序.本文的环境是windows10,本文的例子是通过点击网页上的一个button,调用本地的wor ...
- Android 浏览器启动应用程序
点击浏览器中的URL链接,启动特定的App. 首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]" ...
- 在 Windows 中使用 C# 启动其他程序
因为某些原因需要自动启动一个 Winform 程序,可能是因为第三方资源的原因,使用 System.Diagnostics.Process 无法成功启动 (可以看到界面,但是会报 Unhandled ...
- 【转载】Chrome使用自定义协议打开本地程序并运行IE打开网页
部分内容转载自: http://blog.sina.com.cn/s/blog_e2b8213a0102wqby.html 项目中遇到某需求:chorme要运行IE并打开网页.解决方案之一就是通过自定 ...
- 实现chrome扩展启动本地进程 - 补充
实现chrome扩展启动本地进程 - 补充 标签: chrome扩展启动本地程序访问本地磁盘 2014-10-17 11:42 6753人阅读 评论(17) 收藏 举报 分类: Chrome Plu ...
随机推荐
- Feign使用Hystrix
Feign使用Hystrix开发步骤 1.导入依赖spring-cloud-starter-hystrix 2.消费启动类开启@EnableCircuitBreaker 3.配置yml文件feign. ...
- vue中关于dom的操作
mounted 个人理解为DOM结构准备就绪了,可以开始加载vue数据了, 挂载点,配合使用 mounted:function(){ this.$nextTick(function(){ //this ...
- mybatis教程3(映射文件)
MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...
- Jmeter JDBC Request 查询语句中有汉字查询结果为空的解决方法
搜索接口我会校验返回值,查询JDBC Request 查询语句有中文字的时候查询会有问题. 解决方法很简单,在JDBC Connection Configuration的Database URL里加一 ...
- spring boot整合JMS(ActiveMQ实现)
pom依赖如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...
- IIS部署wordpress4.7.4
准备环境和安装包:win7操作系统 iis php7.1.6 wordpress4.7.4 1.安装iis,需要cgi模块,一般安装建议全部勾选上. 2.安装配置php7.1.6 在官网http ...
- org.apache.catalina.LifecycleException错误解决方案
1.org.apache.catalina.LifecycleException错误 一般是由于在tomcat中运行web应用时为所在的jvm分配的堆空间过小,具体错误截图如下所示: 2.为特定程序分 ...
- 一道生成不重复随机数字的C#笔试编程题
当时写在纸上的程序没有验证输入,出面试公司没多久就突然想起来这点了,囧啊! 不过当时笔试的时候想到写异常处理了. 回来上机整理了一下程序,才发现原来还会用到递归的. 当时面试官边说边出的题,问他数字是 ...
- FireFox升级后FireBug不能使用
今天发现,火狐浏览器从49.0.2升级到50.0.2之后,firebug的js调试被禁用了,果断去找49.0.2的版本. 链接: https://ftp.mozilla.org/pub/firefox ...
- ssr 之Nuxt.js
ssr:server side rendering(服务端渲染),目的是为了解决单页面应用的 SEO 的问题,对于一般网站影响不大,但是对于论坛类,内容类网站来说是致命的,搜索引擎无法抓取页面相关内容 ...