昨天我们的代码狂人叫我一天帮他做个web页面可以用来调试ActiveX控件的.
我的第一反应....ActiveX控件?啥..没接触过.不知道能不能搞..狂人告诉我3个小时后就要去人家公司调试用的.必须做好.
我霸气的说:"好,没问题!搞不出来我剁手".当然只是玩笑话,不过有种置于死地而后生的感觉.
首先百度下啥是ActiveX控件:按我的理解就是,打包成一个库,之后在windows上注册,然后就能在该台windows上用这个插件了.(我的电脑是MAC系统呀,算了找台windows折腾吧)
第一步:注册
打开cmd
(注意:控件与系统是不是一样都是32位或者64位,注册不成功可能是少装了一些库)
吐槽:在和其他合作捣鼓一个东西的时候,我们虽然可能没办法解决问题,但可以帮其他人一起找出问题所在.不要以为"事不关己高高挂起".
输入 regsvr32 C:\xxxx.ocx (XXXX为控件名, C:\为目录))
成功的话会弹出成功提示
第二步:添加到HTML
这一步其实不难,就是繁琐.直接上代码
这里有些参数要说明下.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就是在这时候起到作用的.
触发事件
for里面填的是id event写的是触发的事件名,而varMsg是他的返回值.
其实这里我也不太了解,大概估计是一个回调函数,因为我也不清楚他的c++是怎么写的.
第四步:让控件页面可以兼容
据我百X,谷X一段时间之后所知,ActiveX控件只能运行在IE上,因为这原本就是微软的东东,如果你想运行在其他浏览器上,就只能做成浏览器的插件,提供个关键词有需要的人可以去查查NPAPI(Netscape Plugin Application Programming Interface,网景插件应用程序接口).
收工......
后续: