ActiveX控件的检测、安装与卸载

 

一、ActiveX控件的检测、安装与卸载 

(
1 ) 用JavaScript检测系统中是否已经安装了某个ActiveX控件
try  {
var  ax  =   new  ActiveXObject(“控件名称”);
alert(“已安装”);
catch (e) {
alert(“未安装”);
}
如果组件不是自己编写的,要确定控件名称,首先要知道控件的CLSID。每个COM组件都会对应一个CLSID,可在IE管理加载项中获得其CLSID,然后在注册表的HKEY_CLASSESS_ROOT

中查找CLSID,打开它的节点,其中有一项是ProgID,它的值就是创建该控件时所需的名称。

Demo:
< html >
< head >
< title > 安装ActiveX < / title>
< / head>
< body >
< h1 id = " Tip " > 正在加载控件…… < / h1>
< object
classid
= " CLSID:B2EC6023-6C00-49F9-A8BE-3AAC4E326BA4 "
codebase
= " http://www.demo.com/bin/activex.cab#version=0,0,0,1 "  style = " display:none " >< / object>
< / body>
< script type = " text/javascript " >
window.onload 
=   function () {
try  {
var  ax  =   new  ActiveXObject( " name " );
$(
" Tip " ).innerHTML  =   ' 安装完成 ' ;
catch  (e) {
$(
" Tip " ).innerHTML  =   ' 等待您的操作…  '
+   ' <p>现在您的浏览器或安全防护软件可能阻止了控件的安装。<br> '
+   ' 请单击信息栏,然后选择"安装 ActiveX 控件"<br> '
+   ' 在”IE安全警告”对话框中,单击"安装"</p> ' ;
}
};
< / script>
< / html>

(
2 ) 如何卸载ActiveX控件
IE菜单栏-工具-管理加载项-工具栏和扩展-所有加载项,
双击某控件,复制文件路径,运行
" regsvr32 /u 文件路径 " 命令,卸载成功。

 


二、JavaScript检查ActiveX控件是否已经安装过,这一篇的检测控件是否安装过省去了设置ie安全级别的麻烦!
function  detectPlugin(CLSID,functionName)
{
    
var  pluginDiv  =  document.createElement( " <div id=\"pluginDiv\" style=\"display:none\"></div> " )
    document.body.insertBefore(pluginDiv);
    pluginDiv.innerHTML 
=   ' <object id="objectForDetectPlugin" classid="CLSID: ' +  CLSID  + ' "></object> ' ;
    
try
    {
        
if (eval( " objectForDetectPlugin. "   +  functionName)  ==  undefined)
        {
            pluginDiv.removeNode(
true ); // 删除pluginDiv及其所有的子元素
             return   false ;
        }
        
else
        {
            pluginDiv.removeNode(
true ); // 删除pluginDiv及其所有的子元素
             return   true ;
        }
    }
    
catch (e)
    {
        
return   false ;
    }
}
这是通用的方法,只需要把唯一的Activex的clsid和任意一个属性或方法名传进来就可以判断了。(找了两个小时才找到 
- _ -!
下附测试代码:
 
<! DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = " http://www.w3.org/1999/xhtml " >
< head >
< meta http - equiv = " Content-Type "  content = " text/html; charset=gb2312 "   / >
< title > ~~~~ < / title>
< / head>
< script language = " javascript " >
function  openreg(){ 
    
if (detectPlugin( ' A0F5EA74-8C04-4AF7-B7EA-DCB43F53ED45 ' , ' CurVersion ' ) == false )
    {
        alert(
" 控件未安装 " );
    }
}
function  detectPlugin(CLSID,functionName) 

    
var  pluginDiv  =  document.createElement( " <div id=\"pluginDiv\" style=\"display:none\"></div> "
    document.body.insertBefore(pluginDiv); 
    pluginDiv.innerHTML 
=   ' <object id="objectForDetectPlugin" classid="CLSID: ' +  CLSID  + ' "></object> '
    
try  
    { 
        
if (eval( " objectForDetectPlugin. "   +  functionName)  ==  undefined) 
        { 
            pluginDiv.removeNode(
true ); // 删除pluginDiv及其所有的子元素 
             return   false
        } 
        
else
        {
            pluginDiv.removeNode(
true ); // 删除pluginDiv及其所有的子元素 
             return   true
        }
    } 
    
catch (e) 
    {
        
return   false
    } 

< / script>
< body >
< p > 通过浏览器打开Topteam客户端 ---- 测试 < / p>
< p >  
< input type = " button "  value = " 进入系统 "  onclick = " openreg(); "/
< / p>
< / body>
< / html>


三、JavaScript检查ActiveX控件是否已经安装过

 

有下列两种方式去检测是否安装,如果在本地iis运行,检测速度很快,放到远程后速度很慢,至少要两分钟

1 .采用object元素的object属性是否为空可以判断此控件是否存在,如 
< object classid = " clsid:00460182-9E5E-11d5-B7C8-B8269041DD57 "  id = " activeObj "   width = " 100% "  height = " 100% " >  
     
< param name = " BorderStyle "  value = " 1 " >

< / object> 
< script >  
if (document.all.activeObj.object  ==   null ) { 

< / script>

2 .通过检测对象的属性是否未定义检测

  
var  mObject = false ;
  
try {
    
var  mFieldList  =  mainForm.activeObj.FieldsList; //
  } catch (e){mObject = true ;}

if  ( ! mObject){...}