activex 使用与注册

hasPlugin ? (b.innerHTML = Browser.Engine.trident ? '<object id="ocx" width="100%" height="100%" classid="CLSID:{classid}">                                <param name="lVideoWindNum" value="1">                                <param name="VideoWindBarColor" value="414141">                                <param name="VideoWindTextColor" value="9c9c9c">                            </object>'.substitute({
      classid: PLUGINS_CLASSID
    })  : '<object id="ocx" width="100%" height="100%"                                type="application/media-plugin-version-{version}"                                VideoWindTextColor="9c9c9c"                                VideoWindBarColor="414141">                            </object>'.substitute({
      version: PLUGINS_VERSION
    }), bindOcxEvents.delay(100, window, a))  : (Browser.Platform.win ? c = '/webplugin.exe' : Browser.Platform.mac && (c = '/webplugin.pkg'), b.innerHTML = '<div class="J_download_plugin" id="download_plugin">                                <a href="{link}" target="_download">{content}</a>                            </div>'.substitute({
      link: c,
      content: tl('w_no_plugins')

    })


先来解释一下上面的代码,hasPlugin为true是ie浏览器内核的,ie通过classid找到activex

其他的用第二种方式

/webplugin.exe是下载安装插件,安装完成就可以调用


1:创建ActiveX对象
   在web中使用ActiveX组件有两种方法,一是如下
<HTML>
<HEAD>
<TITLE>rep_print_medcan.CAB</TITLE>
</HEAD>
<BODY>
<OBJECT ID="Rep_Print_MedCan21"
CLASSID="CLSID:C0558D51-6AFD-11D5-BF5C-005070024001"
CODEBASE="rep_print_medcan.CAB#version=1,0,0,25">
</OBJECT>
</BODY>
</HTML>
OBJECT标签中,通过ID指点了对象的ID号,javascript可以使用该ID号来引用该对象,而classid用于标识这个组件,每个ActiveX组件都有唯一一个用于表示他的ID号。而codebase指定的程序下载到本地(在系统目录的“Downloaded Program Files”子目录下),然后调用组件程序的自注册入口函数注册到当前系统中,以后的创建都在本地进行,不再涉及codebase属性
 使用以上的方法来创建ActiveX对象,有些参数设置需要手抖的填写,麻烦,

2、另外可以使用javascript的ActiveXObject对象来创建,一般过程是var act=new ActiveXObject(proid),proid为该ActiveX的标识号,是Classid的另一种表示方法

其中proid指在ocxctrl.cpp文件下的:

 

// 初始化类工厂和 guid

IMPLEMENT_OLECREATE_EX(CtestOCX2Ctrl, "TESTOCX2.testOCX2Ctrl.1",
 0xe0d5a597, 0x336b, 0x4829, 0x84, 0xe0, 0x77, 0x43, 0x91, 0xc8, 0xe8, 0xdb)

 

红色表示部分。

3、

         var _tempPlayer = null;
         _tempPlayer = window.document.createElement("object");
         _tempPlayer.classid = "clsid:358DE739-F39F-4832-9458-80FDE806F845";
         _tempPlayer.id = "realtime_player"+i; // 唯一标识
         _tempPlayer.using = false; // 是否正在使用
         _tempPlayer.style.width = "100%";
         _tempPlayer.style.height = "100%";           

或者:
            /*var _tempPlayer = window.document.createElement("object");
            _tempPlayer.setAttribute("id","realtime_player"+i);
            _tempPlayer.setAttribute("classid","clsid:358DE739-F39F-4832-9458-80FDE806F845");
            _tempPlayer.setAttribute("width","100%");
            _tempPlayer.setAttribute("height","100%");
            _tempPlayer.using = false;  //>是否正在使用 

4、检测ocx是否可用的方法

在js下是 var o = new ActiveXObject(ProgID);
IE下若ocx存在是object,否则是null
即:

var o = new ActiveXObject(ProgID);
if(o)

{

//存在

}

else

{

//不存在

}


 

复制代码
<HTML>
<HEAD>
<TITLE>New Page</TITLE>

<script language="javascript" type="text/javascript">
    //var a1 = new ActiveXObject("TESTOCX1.testOCX1Ctrl.1");
    var ocx;
    function createOcx() {
        ocx = document.createElement("object");
        ocx.setAttribute("id", "ocx1");
        ocx.setAttribute("height", 100);
        ocx.setAttribute("width", 51);
        ocx.setAttribute("classid", "clsid:DA44C63F-4844-483F-9DA0-7129E1A7F05B");
    }

    function DestoryOcx() {
         delete ocx;
    }

    function AddToDiv() {
        var div = document.getElementById("divOcxContainer");
        div.appendChild(ocx);

        ocx.Method2();
    }

    function RemoveFromDiv() {
        var div = document.getElementById("divOcxContainer");
        var ocx1 = document.getElementById("ocx1");
        div.removeChild(ocx1); 
    }

    window.onload = function() {

    }


    window.onunload = function() {

    }

</script>

</HEAD>
<BODY>
<div id="divOcxContainer">
</div>
<input type="button" id="btn1" name="btn1" value="创建ocx" title="创建ocx" onclick="createOcx()"></input>
<input type="button" id="btn2" name="btn2" value="销毁ocx"  title="销毁ocx" onclick="DestoryOcx()"></input>
<input type="button" id="Button1" name="btn2" value="添加到div"  title="添加到div" onclick="AddToDiv()"></input>
<input type="button" id="Button2" name="btn2" value="从div移除"  title="从div移除" onclick="RemoveFromDiv()"></input>
<OBJECT ID="testOCX1" WIDTH=100 HEIGHT=51
 CLASSID="CLSID:DA44C63F-4844-483F-9DA0-7129E1A7F05B">
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="2646">
    <PARAM NAME="_ExtentY" VALUE="1323">
    <PARAM NAME="_StockProps" VALUE="0">
</OBJECT>

<OBJECT ID="testOCX2" WIDTH=100 HEIGHT=51
 CLASSID="CLSID:DA44C63F-4844-483F-9DA0-7129E1A7F05B">
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="2646">
    <PARAM NAME="_ExtentY" VALUE="1323">
    <PARAM NAME="_StockProps" VALUE="0">
</OBJECT>

</BODY>
</HTML>
复制代码

 

参考html文件代码:http://files.cnblogs.com/lidabo/Page1.rar



                  如何注册ActiveX控件

      对某个OCX控件进行注册,用命令Regsvr32命令:
       对OCX控件注册的命令:
       1.Regsvr32 /s ocx文件的绝对路径   此命令不弹对话框直接注册成功
       2.Regsvr32 ocx文件的绝对路径  此命令将弹出对话框提示注册成功
       对OCX控件注销的命令:
       1.Regsvr32 /u ocx文件的绝对路径   此命令弹出注销成功对话框,注销成功。
        在JSP页面中调用ActiveX控件的时候,在页面可以用OBJECT标签来加载,如果是OCX控件则需要对其注册利用上面的命令进行注册,在页面只需提供其classid例如:
        <OBJECT classid="clsid:341162BA-3754-448C-BE54-EC34D82D5105" id="objIDCard" </OBJECT>
        而如果ActiveX控件被打包成cab控件的话,需要将其放在服务器程序里面的一个包里面,然后用
        <OBJECT
               classid="clsid:10946843-7507-44FE-ACE8-2B3483D179B7"
               codebase="./cab/CVR100.cab#version=V3,0,3,3"
               id="CVR_IDCard"
               name="CVR_IDCard"
               align=center
               width="0"
               height="0"
               hspace=0
               vspace=0  
                >
           </OBJECT>
        codebase指定CAB文件的服务器相对路径,classid指定注册编号,其他的属性可以自由搭配使用。
ACTIVEX控件与安全
网页中调用ocx,并部署在服务器使用 ocx注册;

调用ocx的网页在本地打开可以成功调用ocx;

把网页部署在服务器上,通过客户端打开,不能成功调用ocx,报“对象不能使用属性或方法”,

可能原因:由于ocx没有数字签名,故无法通过IE验证,

解决方法:在客户端设置服务器网址为可信任站点,同时将可信任站点的安全级别设置为最低,打开网页,成功调用ocx
然后有时候还需要对IE上的Internet安全里面的四个选项的ACTIVEX相关的选项选为启动即可。 

                  如何注册ActiveX控件

      对某个OCX控件进行注册,用命令Regsvr32命令:
       对OCX控件注册的命令:
       1.Regsvr32 /s ocx文件的绝对路径   此命令不弹对话框直接注册成功
       2.Regsvr32 ocx文件的绝对路径  此命令将弹出对话框提示注册成功
       对OCX控件注销的命令:
       1.Regsvr32 /u ocx文件的绝对路径   此命令弹出注销成功对话框,注销成功。
        在JSP页面中调用ActiveX控件的时候,在页面可以用OBJECT标签来加载,如果是OCX控件则需要对其注册利用上面的命令进行注册,在页面只需提供其classid例如:
        <OBJECT classid="clsid:341162BA-3754-448C-BE54-EC34D82D5105" id="objIDCard" </OBJECT>
        而如果ActiveX控件被打包成cab控件的话,需要将其放在服务器程序里面的一个包里面,然后用
        <OBJECT
               classid="clsid:10946843-7507-44FE-ACE8-2B3483D179B7"
               codebase="./cab/CVR100.cab#version=V3,0,3,3"
               id="CVR_IDCard"
               name="CVR_IDCard"
               align=center
               width="0"
               height="0"
               hspace=0
               vspace=0  
                >
           </OBJECT>
        codebase指定CAB文件的服务器相对路径,classid指定注册编号,其他的属性可以自由搭配使用。
ACTIVEX控件与安全
网页中调用ocx,并部署在服务器使用 ocx注册;

调用ocx的网页在本地打开可以成功调用ocx;

把网页部署在服务器上,通过客户端打开,不能成功调用ocx,报“对象不能使用属性或方法”,

可能原因:由于ocx没有数字签名,故无法通过IE验证,

解决方法:在客户端设置服务器网址为可信任站点,同时将可信任站点的安全级别设置为最低,打开网页,成功调用ocx
然后有时候还需要对IE上的Internet安全里面的四个选项的ACTIVEX相关的选项选为启动即可。 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值