基于Chrome浏览器调用客户端程序

基于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);
    }
  1. 在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登录界面
这里写图片描述

你可能感兴趣的:(web调用客户端程序)