Javascript和OCX的结合历程
这种相对古老的调用方式主要用在Windows系列平台上的多种语言软件之间的合作。
此次项目合作方式是,客户提供语音功能的OCX模块和VC++客户端软件,我需要在WEB软件中调用其中的接口开发相关功能,并且调用客户端软件。
由于是研究型的项目,我花了一天时间成功的实现了软件调用(静态安装注册OCX),分享一下过程。
① 注册OCX到本机
注册命令 :cmd.exe /c regsvr32.exe my.ocx
去注册命令:cmd.exe /c regsvr32.exe /u my.ocx
② 查看OCX注册结果
执行regedit,打开注册表,搜索ocx的文件名,得到注册表项。
右键导出注册表项到文件,得到如下的信息:
1 Windows Registry Editor Version 5.00 2 3 [HKEY_CLASSES_ROOT\AppID\{C8E251BB-1326-4870-9BF4-53593AE5B108}] 4 @="my Control"
③ 在页面中初始化该控件
1 <object id="myOcx" name="test" BORDER="0" WIDTH="300" HEIGHT="300" 2 style="display: none" 3 classid="clsid:C8E251BB-1326-4870-9BF4-53593AE5B108" 4 onerror="onObjectError()"> 5 </object>
onerror方法很重要,如果未能正确的引用刚刚注册的控件,会提示出错。
SCRIPT438: 对象不支持“XX”属性或方法。
这个错误查询一抓一大把,但是有效的支持却少之又少。
本人此次遇到以下几个情况:
1.页面引用错误的classid。
2.OCX未实现安全接口。
3.OCX未标记这段代码能被js调用。
④ 在页面中调用该控件
1 function() { 2 if (!window.ActiveXObject) { 3 alert("对不起,证书登陆请使用IE浏览器!"); 4 return; 5 } 6 var myObj = document.getElementById("myOcx"); 7 var name = "201"; 8 var passwd = "201"; 9 var server = "192.168.8.250"; 10 var result = myObj.register(name,passwd,server);
11 }
⑤ 设置IE浏览器
打开Internet选项->安全->Internet->自定义级别
在弹出框中选择“ActiveX 控件和插件”选项,将和ActiveX相关的选项全部启用。
运气好的话,你就可以成功的调用OCX了。
上善若水,水利万物而不争。