基于Chrome浏览器调用客户端程序
1.在IE中可以使用ActiveXObject对象调用客户端程序,调用需要设置IE浏览器的安全“自定义级别”,即将ActiveX选项的子项设置为启用。然后刷新即可调用,js调用方式:executableFullPath 为被调用的程序的所在目录;以Chrome调用QQ客户端为例:
var executableFullPath = "E:/Boyce/software/QQScLauncher.exe";
try {
var shellActiveXObject = new ActiveXObject("WScript.Shell");
if(!shellActiveXObject) {
alert('Could not get reference to WScript.Shell');
shellActiveXObject.exec(executableFullPath);
shellActiveXObject = null;
return;
}
catch(errorObject) {
alert('Error:\n' + errorObject.message);
}
- 在Chrome中用如上方法调用,会出现ActiveXObject is not defined ,这是因为Chrome出于安全性考虑已经禁止直接调用客户端程序,去除了内置对象ActiveXObject,在Chrome下解决该问题思路,可以选择使用 “url protocol handler”私有协议,widows提供了用户可自定义的协议,使用私有协议首先需要到注册表下添加协议的属性(类型、key、值),通过已定义的私有协议可以就可以调用本地客户端程序,实现步骤:
1>添加注册表:
新建文本文档粘贴如下代码:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\F1]
@="URL:F1 Protocol Handler"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\F1\shell]
[HKEY_CLASSES_ROOT\F1\shell\open]
[HKEY_CLASSES_ROOT\F1\shell\open\command]
@="E:\\Boyce\\path\\qq\\Bin\\QQScLauncher.exe"
注册表说明:
Windows Registry Editor Version 5.00:注册表的版本,
F1:私有协议的key;可自定义
@="URL:F1 Protocol Handler":指定对应协议类型
Shell:关键字
Open:动作
Command:要执行的命令
@="E:\\Boyce\\path\\qq\\Bin\\QQScLauncher.exe" :命令值
一个注册表文件可声明多个添加注册表的命令行;
2>执行:
另存为为注册表文件.reg,编码为unicode,否则会报“…不是二进制文件….”;以管理员身份运行注册表。
3>调用:
在页面中添加调用,最简单方式示例调用即可,F1:已经添加的私有协议。在浏览器中点击链接即可打开对应客户端程序。
测试示例:
点击弹出效果
成功打开qq登录界面