Javascript和OCX的结合历程

这种相对古老的调用方式主要用在Windows系列平台上的多种语言软件之间的合作。

此次项目合作方式是,客户提供语音功能的OCX模块和VC++客户端软件,我需要在WEB软件中调用其中的接口开发相关功能,并且调用客户端软件。

由于是研究型的项目,我花了一天时间成功的实现了软件调用,分享一下过程。

① 注册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 @="BluetelCallsys 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了。

时间: 2024-10-17 03:10:29

Javascript和OCX的结合历程的相关文章

JAVASCRIPT 调用 OCX 的那些坑

这个东西我之前已经想写了,但是在我写完"制作OCX","MFC应用OCX" 之后,html 调用OCX 就一直不成功,搞了好久,都快要放弃了.昨天领导需要我这边完成一个通过浏览器启动外部应用程序这样一个功能,限于公司懂OCX 的不多,就担起了这个任务.我知道之前尝试的时候就失败了,所以这次又进了那个坑,坑了我好久,直到快下班前才解决. 记录下解决方法. 一,首先准备一个可以正常运行的OCX. 这个东西还是用c++写比较方便,前几篇已经写过了,就不多赘述了. 二,准备

javascript调用ActiveX接口失败的解决方案及使用心得

前段时间公司做了个比较大的项目,需要用到ocx控件,我厂大部分项目都采用C#.net,而winform程序条用ocx控件接口是相对简单的,但是javascript调用ocx接口,却和winform的用法有些不同,其实真捉摸下,也就能发现:差别不大. 笔者此次主要阐述在项目中用javascript调用ocx控件接口,也就是activeX控件时所遇到的问题及其解决方案.winform用法不在此篇中阐述. 调用activeX插件前,我们要做一些准备工作,我们介绍两种方案: 1.使用regsvr32 命

关于第三方dll,ocx开发的思考

A问题: 最近有个工作,要集成一套老的指纹考勤机器到现在考勤系统(web系统)中,问题出现时老的机器只有ocx可用,没有可用的dll:原本以为简单的第三方调用就ok了,可是ocx不能被承载,在实现上费劲了. B分析: 1.原始开发人员,提供一套可直接调用的dll供调用:(太老了,都没有人了,代码也没有,更别说文档了) 2.javascript与ocx交互,完成功能:(程序改动比较大,与网站后台交互部分数据库存取不能很好地交互:另外稳定相也不是很好) 3.winform桥接:(相当于多了个管道效果

前端入门22-讲讲模块化

声明 本篇内容梳理自以下来源: Github:smyhvae/web JavaScript模块化开发的演进历程 JavaScript模块化七日谈 ES6:Module 的加载实现 CommonJS规范 感谢各位大佬的分享,解惑了很多. 正文-模块化 现在回过头来想想,也许选择以<JavaScript权威指南>一书来作为入门有些不好,因为这本书毕竟是很早之前的,书中所讲的思想.标准也基本都只是 ES5 及那时代的相关技术. 这也就导致了,在书中看到的很多例子,虽然觉得所用到的思想很奇妙,比如临时

JavaScript 模块化历程

这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来.经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史. 无模块时代 在ajax还未提出之前,js还只是一种“玩具语言”,由Brendan Eich花了不到十天时间发明,用来在网页上进行表单校验.实现简单的动画效果等等,你可以回想一下那个网页上到处有公告块飘来飘去的时代. 这个时候并没有前端工程师,服务端工程师只需在页面上随便写写js就能搞定需求.那个时候的前端代码大概像这样: Jav

javascript 调用delphi封装的OCX控件&#183;

1.delphi 7 新建一个工程选择如下类型 2.设置OCX名称 3.增加函数"view"->"Type Library" 4.设置函数名称 5.设置函数返回值与入参(注意 返回参数不要使用 * 因为地址传递无法跟浏览器交互 我是这么理解的,亲测也确实没调用成功) 入参为 in 出差 是out 跟retval 6.点下上面两个小箭头的刷新按钮,就在Impl文件生成了代码,然后填充你的代码就可以了 7.编译与注册DLL regsvr32 E:OCXDelphi

JavaScript学习历程02

自定义对象 <script type="text/javascript"> window.prompt("欢迎?","请在此输入您的姓名."); // 用{}创建对象 保存个人信息 var obj={ name:"习大大", sex:"男", age:50, rank:"主席", show:function(){ var str=this.name+"<br

javascript学习历程

经历了前段时间对HTML和CSS学习的学习,现在对整个网页的设计也有了一定的概念.接下来接触的是JAVASCRIPT,现在对javascript的应用场景的基本书写也有了一定的认识. 首先是对JS的命名规则和语法的学习,这都是一些概念,基本都是了解下就行了.关键字和保留字有好几十个,看得眼都花了.运算符都还行,刚开始感觉+=这个有点难理解,还有就是变量的类型转换太多了,一时半会还不能彻底理解,不过经过几天的练习,现在基本掌握了. 再下来是流程的控制,有if ,switch, for,while.

javascript原型模式发展历程

// 工厂模式 function Person(name,age){ var o = new Object(); o.name=name; o.age=age; o.sayName=function(){ alert(o.name) } return o } var o1=Person('lele',5) var o2=Person('mama',31) // 构造函数模式(能够标识对象属于哪一种类型,但是函数没有复用) function Person(name,age){ this.name=