使用Javascript测试ActiveX控件是否已安装?

16

有没有一种使用Javascript测试是否安装了ActiveX控件的方法?

3个回答

20
function AXOrNull(progId) {
  try {
    return new ActiveXObject(progId);
  }
  catch (ex) {
    return null;
  }
}

我原以为这个方法是有效的,但是ActiveX文件现在在我的本地机器上,而且这种方法总是返回null。 我被给了这段代码: <object id="ASPPrinter" classid="CLSID:48CB850F-41FF-4EE6-B87D-FB9EC26D193F" codebase="ASPPrinter.CAB#version=2,1,0,200"> </object> 但我不确定哪部分代码应该放在progId中。我尝试使用该代码的classid和codebase,但它们都返回null。 - James P. Wright
1
如果不确定,可以在注册表的HKCR\CLSID分支中搜索相关的CLSID。当你找到它并且这个类是启用了COM的,你会发现一个名为ProgID的子键。该键的默认值是你所需要的ProgID。 - Tomalak
我尝试了“ASPPrinter.CAB”,但没有成功。然后我像Tomalak说的那样查了注册表,发现没有带有该CLSID的项目。这意味着它没有被安装...但IE不再提示我安装它们...所以我不确定发生了什么事情。 - James P. Wright
@Pselus:你试过ASPPrinterCOM.ASPPrinter吗?根据一些谷歌搜索结果,这似乎是正确的ProgId。 - Tomalak

11

解决方案,尝试调用一个新的ActiveXObject:


function testForActiveX(){
    tester = null;
    try {
        tester = new ActiveXObject('htmlfile');
    }
     catch (e) {
        // catch the exception
    }
    if (tester) {
        // ActiveX is installed
        return true;
    }
    return false;
}

0
   try{
      if(new ActiveXObject("Nameofplugin")){
        // write your code if plugin available
       }
      else{
       // write your code if plugin is not available
       }
    }
    catch(erro){
    //write your code if plugin is not available
    }

你可以从IE中获取插件名称-->工具-->管理附加组件-->检查列表并选择你所需的插件名称


如果有人不幸在2023年仍需要使用ActiveX,以下是如何找到名称的更详细信息。您需要在Edge浏览器中打开IE模式的页面。然后,在地址栏左侧单击IE图标。单击弹出的模态框中的“管理”。现在,您将看到一个设置选项卡,底部是Internet选项,单击右侧的链接按钮。这将打开旧的IE设置窗口。单击程序选项卡,然后单击“管理附加组件”。工具栏和扩展应列出该附加组件。(我必须先单击另一个部分,然后返回。) - Kitserve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接