日期:2014-05-16  浏览次数:20537 次

javascript 使用ocx
1.找出相关信息,主要是classid
首先我们的给这个ocx起个名字,起什么名字通过最后生成的ocx控件的文件名决定。
第二,我们的找到这个ocx的编号值,将ocx提取出来,我采用Microsoft Control Pad来编辑,得到ocx控件的classid, 然后我们做下面的工作。

由于我的ocx不是自己编辑的,所以我是等注册后去注册表里找,直接复制文件名,然后打开注册表->查找,注意:第一次找到的可能不是我们想要的。一般情况,我们想要的这个右边的内容不止一项。然后复制他的父节点,例如:{CA69969C-2F27-41D3-954D-A48B941C3BA7}作为classid。

2.注册ocx控件
注册ocx控件使用RegSvr32.exe。
使用RegSvr32.exe(在System目录下)注册,语法为:
RegSvr32 path\ocxname.ocx
如果注册成功将显示一个成功的消息框。

如果不希望看到这个对话框,也可以使用/s选项,如
RegSvr32 /s your.ocx
如果取消注册,可以使用/u选项,如
RegSvr32 /u your.ocx

一般我们还要放到path(环境变量中配置的)下:
copy path\Biokey.ocx C:\WINDOWS\system32\

3.加载ocx控件

注册成功后,我们就得写一个html页面,通过<OBJECT>来加载这个控件了。具体如下:
<OBJECT id="ocx文件名/注册表里找来的值" codeBase="ocx控件的相对位置#version=1,0,0,0"data="data:application/xoleobject;base64,mRHW/Ifh3UqI5ZryOEhtERAHAAD/KgAAYSQAAA=="  classid="CLSID:通过MCP找到的classid" VIEWASTEXT> </OBJECT> 

上面有些内容我不了解,我就直接
<object classid="clsid:CA69969C-2F27-41D3-954D-A48B941C3BA7" id="Biokey1" width="0" height="0"> 
其他选项就不写,这样也可以。

4.调用

一、调用属性和方法
调用属性和方法很简单,直接用object定义的id.属性/方法。例:属性Biokey1.IsRegister   方法Biokey1.CancelEnroll();

二、调用事件
<script language="javascript" for="Biokey1" event="OnFeatureInfo(AQuality)" type="text/javascript"> 
if(AQuality != 0){ 
alert("不合格,请重来!"); 
} 
         //该事件要做的事情都写在这里就可以了。。。。。。 
</script> 
解释:event="OnFeatureInfo(AQuality)"  是ocx中的事件

<OBJECT   ID= "test "   WIDTH=0   HEIGHT=0 
          CLASSID= "CLSID:226BEB85-AFA6-4B1A-9B5B-48673A55BB85 " 
          CODEBASE= "http://localhost/activex/a.ocx "> 
                <PARAM   NAME= "_ExtentX "   VALUE= "0 "> 
                <PARAM   NAME= "_ExtentY "   VALUE= "0 "> 
 </OBJECT> 

//CODEBASE= "http://localhost/activex/a.ocx " 

這個不應該這樣寫,要寫成 
CODEBASE= "../activex/a.ocx#version1.0.0.1 " 




1 楼 jiangcan611 2012-04-06  
event="OnFeatureInfo(AQuality)"中的AQuality代表的是什么????????
2 楼 123003473 2012-04-19  
jiangcan611 写道
event="OnFeatureInfo(AQuality)"中的AQuality代表的是什么????????

AQuality 代表ocx控件传过了的参数名称