当前位置: 首页 > news >正文

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了。

转载于:https://www.cnblogs.com/yoyotl/p/4848758.html

相关文章:

  • 解析微信开发之搜索歌曲
  • rhel 6.5 x86_64 配置centos yum源
  • C/C++连接MySql数据库
  • 【转】【Linux】 临界区,互斥量,信号量,事件的区别
  • LA 2038 Strategic game(最小点覆盖,树形dp,二分匹配)
  • VMWare下虚拟机NAT共享方式上网的配置说明
  • hadoop中遇到的问题。
  • Android基础小技术点:Android ListView设置背景图片及分割线、周边距
  • 结构体
  • zabbix vfs.fs.discovery过滤
  • 主键生成
  • RDVTabBarController--可自由定制的iOS底部导航控件
  • 智能园区报修系统可行性分析
  • 堆排序学习笔记及堆排序算法的python实现
  • Golang 并发简介
  • Django 博客开发教程 16 - 统计文章阅读量
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JS变量作用域
  • Laravel5.4 Queues队列学习
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • magento2项目上线注意事项
  • python3 使用 asyncio 代替线程
  • Redis的resp协议
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vue 配置sass、scss全局变量
  • 编写高质量JavaScript代码之并发
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 入门到放弃node系列之Hello Word篇
  • 手机app有了短信验证码还有没必要有图片验证码?
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​MySQL主从复制一致性检测
  • #微信小程序:微信小程序常见的配置传旨
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (一)u-boot-nand.bin的下载
  • (转)linux 命令大全
  • ***测试-HTTP方法
  • *上位机的定义
  • .axf 转化 .bin文件 的方法
  • .Net 4.0并行库实用性演练
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • [30期] 我的学习方法
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强
  • [C++] new和delete
  • [CentOs7]iptables防火墙安装与设置
  • [Django 0-1] Core.Checks 模块
  • [EFI]MSI GF63 Thin 9SCXR电脑 Hackintosh 黑苹果efi引导文件
  • [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总
  • [Firefly-Linux] RK3568修改控制台DEBUG为普通串口UART