使用JavaScript调用ActiveX控件

原创
2014/05/06 13:23
阅读数 2.4W

昨天我们的代码狂人叫我一天帮他做个web页面可以用来调试ActiveX控件的.

我的第一反应....ActiveX控件?啥..没接触过.不知道能不能搞..狂人告诉我3个小时后就要去人家公司调试用的.必须做好.

我霸气的说:"好,没问题!搞不出来我剁手".当然只是玩笑话,不过有种置于死地而后生的感觉.

首先百度下啥是ActiveX控件:按我的理解就是,打包成一个库,之后在windows上注册,然后就能在该台windows上用这个插件了.(我的电脑是MAC系统呀,算了找台windows折腾吧)

第一步:注册

打开cmd

(注意:控件与系统是不是一样都是32位或者64位,注册不成功可能是少装了一些库)

吐槽:在和其他合作捣鼓一个东西的时候,我们虽然可能没办法解决问题,但可以帮其他人一起找出问题所在.不要以为"事不关己高高挂起".

输入   regsvr32 C:\xxxx.ocx (XXXX为控件名, C:\为目录))

成功的话会弹出成功提示

第二步:添加到HTML

这一步其实不难,就是繁琐.直接上代码

<OBJECT id="EpecPhoneAX"
        WIDTH="800" HEIGHT="400"
        classid="CLSID:8318CB95-3D14-45AC-84A7-215FE3117778">
</OBJECT>

这里有些参数要说明下.object里的id是用来js调用事件的,所以可以随便起个,classid是在注册成功后生成的,用来识别你用的是哪个ocx,所以说是唯一的.

至于如何找到classid有几种方法,可以百度下,我使用Microsoft ActiveX Control Pad这个软件.写这篇文章的时候,我已经都调试好了,之前也没有截图,所以稍微的说下用MACP取classid的流程吧.

获取classid

用MACP新建一个HTML页面,然后再选择Insert ActiveX Control插入一个控件,type就是你的控件名,如果注册成功的话,就可以在type里面找到,插入成功后,在object里面就可以复制classid出来了.

自此就可以在html上看到这个ocx了.

第三步:用JavaScript调用方法and触发事件

这个最简单,直接上代码

调用方法

    var obj = document.getElementById("EpecPhoneAX");
    
    obj.MakeCall(MakeCall_pchNumber);

object里的id就是在这时候起到作用的.

触发事件

<SCRIPT type="text/javascript" FOR="EpecPhoneAX" EVENT="OnPhoneRegistrationOk(varMsg)">
    showInfo_evt(varMsg);
</SCRIPT>

for里面填的是id  event写的是触发的事件名,而varMsg是他的返回值.

其实这里我也不太了解,大概估计是一个回调函数,因为我也不清楚他的c++是怎么写的.

第四步:让控件页面可以兼容

据我百X,谷X一段时间之后所知,ActiveX控件只能运行在IE上,因为这原本就是微软的东东,如果你想运行在其他浏览器上,就只能做成浏览器的插件,提供个关键词有需要的人可以去查查NPAPI(Netscape Plugin Application Programming Interface,网景插件应用程序接口).


收工......

后续:   ActiveX控件的发布与安全证书(后续)


展开阅读全文
打赏
3
16 收藏
分享
加载中
更多评论
打赏
0 评论
16 收藏
3
分享
返回顶部
顶部