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

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

由于是研究型的项目,我花了一天时间成功的实现了软件调用(静态安装注册OCX),分享一下过程。

① 注册OCX到本机

注册命令   :cmd.exe /c regsvr32.exe  my.ocx

去注册命令:cmd.exe /c regsvr32.exe /u my.ocx

② 查看OCX注册结果

执行regedit,打开注册表,搜索ocx的文件名,得到注册表项。

右键导出注册表项到文件,得到如下的信息:

 Windows Registry Editor Version 5.00

 [HKEY_CLASSES_ROOT\AppID\{C8E251BB---9BF4-53593AE5B108}]
@="my Control"

③ 在页面中初始化该控件

     <object id="myOcx" name="test" BORDER="0" WIDTH="300" HEIGHT="300"
style="display: none"
classid="clsid:C8E251BB-1326-4870-9BF4-53593AE5B108"
onerror="onObjectError()">
</object>

onerror方法很重要,如果未能正确的引用刚刚注册的控件,会提示出错。

SCRIPT438: 对象不支持“XX”属性或方法。

这个错误查询一抓一大把,但是有效的支持却少之又少。

本人此次遇到以下几个情况:

1.页面引用错误的classid。

2.OCX未实现安全接口。

3.OCX未标记这段代码能被js调用。

④ 在页面中调用该控件

 function() {
if (!window.ActiveXObject) {
alert("对不起,证书登陆请使用IE浏览器!");
return;
}
var myObj = document.getElementById("myOcx");
var name = "201";
var passwd = "201";
var server = "192.168.8.250";
var result = myObj.register(name,passwd,server);
 }

⑤ 设置IE浏览器

打开Internet选项->安全->Internet->自定义级别

在弹出框中选择“ActiveX 控件和插件”选项,将和ActiveX相关的选项全部启用。

运气好的话,你就可以成功的调用OCX了。

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

  1. JAVASCRIPT 调用 OCX 的那些坑

    这个东西我之前已经想写了,但是在我写完"制作OCX","MFC应用OCX" 之后,html 调用OCX 就一直不成功,搞了好久,都快要放弃了.昨天领导需要我这边 ...

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

    前段时间公司做了个比较大的项目,需要用到ocx控件,我厂大部分项目都采用C#.net,而winform程序条用ocx控件接口是相对简单的,但是javascript调用ocx接口,却和winform的用 ...

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

    A问题: 最近有个工作,要集成一套老的指纹考勤机器到现在考勤系统(web系统)中,问题出现时老的机器只有ocx可用,没有可用的dll:原本以为简单的第三方调用就ok了,可是ocx不能被承载,在实现上费 ...

  4. 前端 JavaScript 基础

    内容目录: 一.JavaScript介绍 二.基础语法   2.1 变量   2.2 数据类型   2.3 流程控制   2.5 函数的全局变量和局部变量   2.6 作用域   2.7 词法分析   ...

  5. 【JS】308- 深入理解ESLint

    点击上方"前端自习课"关注,学习起来~ 本文来自于"自然醒"投稿至[前端早读课]. 小沈是一个刚刚开始工作的前端实习生,第一次进行团队开发,难免有些紧张.在导师 ...

  6. Delphi开发嵌入IE的OCX,调用页面上JavaScript的方法

    利用Delphi的ActiveForm,可以很方便地开发出可以嵌入IE的ActiveX组件,无需知道太多幕后的COM知识.如何使得OCX可以很方便地调用Web上的JavaScript函数呢,研究了一个 ...

  7. JavaScript 模块化历程

    这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来.经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史. 无模块时代 在ajax还未提出 ...

  8. JavaScript学习历程和心得体验

    一.前言 在过去,JavaScript只是被用来做一些简单的网页效果,比如表单验证.浮动广告等,所以那时候JavaScript并没有受到重视.自从AJAX开始流行后,人们发现利用JavaScript可 ...

  9. vc++调用msscript.ocx解析实现C++与JavaScript脚本交互

    ScriptControl接口 属性名称 类型 备注 AllowUI BOOL 检测是否允许运行用户的接口元素.如果为False,则诸如消息框之类的界面元素不可见. CodeObject Object ...

随机推荐

  1. 让IE6/IE7/IE8支持HTML5标签的js代码

    让IE(ie6/ie7/ie8)支持HTML5元素,我们需要在HTML头部添加以下JavaScript,这是一个简单的document.createElement声明,利用条件注释针对IE来调用这个j ...

  2. 拍案惊奇!9款神奇的jQuery/CSS3经典插件

    款非常给力的jQuery/CSS3经典插件,插件包括CSS3图片特效.jQuery动画菜单.jQuery时尚登录表单等,一起来看看这些jQuery插件. .CSS3图片重力感应特效 这是一款应用重力感 ...

  3. 理解JavaScript里this关键字

    1.全局代码中的this:始终指向window 2.函数代码中的this: }; var bar = { x: , test: function () { alert(this === bar); a ...

  4. svn自助改动password(PHP脚本实现)

    #创建脚本文件夹 mkdir -p /var/www/svn/svntools #创建apache配置文件 touch /etc/httpd/conf.d/alias.conf #输入下面内容: Al ...

  5. Linux:编译动态库时遇到的错误relocation R_X86_64_32 against `a local symbol'

    编译动态库时遇到如下错误: ... ... relocation R_X86_64_32 against `a local symbol' can not be used when making a ...

  6. swift第一章

    swift中添加的类型:Tuple(元组类型),能够让你创建或者传递一组数据. 比方作为函数的返回值时.你能够用一个元组能够返回多个值. swift中还添加了可选(Optional)类型,用于处理值缺 ...

  7. 用Main方法调用freemarker生成文件

    MyGenerator.java package com.comp.common; import java.io.BufferedWriter; import java.io.File; import ...

  8. picture control控件

    注意:picture control控件,需要先更改其ID再使用. CImage myImage; CFileDialog fileDlg(TRUE,NULL,NULL,OFN_ALLOWMULTIS ...

  9. Java动态加载属性文件.properties

    当我们使用如下语句加载.properties时: ClassLoader classLoader = this.getClass().getClassLoader(); Properties prop ...

  10. java统计abacbacdadbc中的每个字母出现的次数,输出格式是:a(4)b(3)c(3)d(2)

    import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; /* ...