我在页面使用一个ActiveX控件,如果没安装过控件,IE会在上方出现一个黄条提示安装。
现在我想在尝试安装这个控件之前,先判断这个控件是否安装过。
有没有什么方法?
如果控件已经安装过,那么我判断出来后正常使用控件,
如果控件没有安装过,那么我跳转其他页面。
目的是在这两种情况下都不出现黄条。

解决方案 »

  1.   

    安装ActiveX其实就是在注册表中注册响应组件
    用com库的一些函数检查一下有没有相关组件就可以
      

  2.   

    通过CLASS ID 来判断,,自己该下就行了! 
    HKEY hKey = NULL;   
    BOOL bPresent = FALSE;   
    TCHAR szPath[MAX_PATH] = {0};   
    DWORD dwRegType;   
    DWORD cbData = sizeof(szPath) * sizeof(TCHAR);   
    //打开注册表。这个表键保存了默认浏览器路径内容等
    RegOpenKey(HKEY_CLASSES_ROOT,TEXT("CLSID\\{D27CDB6E-AE6D-11cf-96B8-444553540000}\\InprocServer32"),&hKey);   
    if (hKey)     //打开成功后
    {   
    HANDLE hFile; 
    szPath[0] = 0;   
    //查询注册表,查询完毕后关闭它
    RegQueryValueEx(hKey,NULL,NULL,&dwRegType,(LPBYTE)szPath,&cbData);   
    RegCloseKey(hKey);   
    //打开文件判断文件是否能够正常打开,不能说明有问题 这个控件不存在
    hFile = CreateFile(szPath,0,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);   
    if(INVALID_HANDLE_VALUE != hFile)   
    {   
    bPresent = TRUE;   
    CloseHandle(hFile);   
    }   
    }   
    return bPresent;
      

  3.   


    页面的代码(JSP)是不能访问注册表的吧
    想要执行这段代码 还要做成控件吗?
    如果要的话 就又回到原先的问题了。
      

  4.   

    用js 
    try{
     var obj = CreateObject(....);
    }
    catch(e)
    {
      localtion.href=....
    }
      

  5.   

    用script new个对象,如果产生异常或者返回null跳转
      

  6.   

    MyObj = new ActiveXObject("****"); 
      

  7.   

    通过CLASS ID 来判断,,自己该下就行了!
      

  8.   

    安装ActiveX其实就是在注册表中注册响应组件