随着Web技术的飞速发展,HTML5等现代标准逐渐成为主流,但仍有大量企业级系统依赖传统的OCX控件(ActiveX控件)实现核心功能,如视频播放、文档处理、工业控制、高精度绘图等。然而,2025年的浏览器生态已全面转向安全、跨平台化,Chrome、Edge等主流浏览器彻底放弃对ActiveX的支持,导致大量企业面临历史业务系统无法迁移、用户被迫停留在老旧IE模式的困境。如何让OCX控件在新时代的Web环境中焕发新生,成为企业数字化转型的关键挑战。
针对上述需求,猿大师中间件推出通用型OCX控件程序,可以把本机OCX控件/ActiveX控件加载到Chrome、Edge等主流浏览器最新版中运行,只需要指定OCX控件的ClassID或ProgID,包括不限于IE中使用的ActiveX控件,只要有持续交互的窗口,都可以使用。
第一步:注册OCX控件
1、把你要注册的OCX控件放在系统目录下。
32位系统将其复制到 C:windowssystem32 目录下。
64位系统将其复制到 C:WindowsSysWOW64 目录下。
2、以管理员身份运行cmd ==>> 输入命令:regsvr32 "ocx文件的完整路径" ==>> OCX注册成功
第二步:打开测试页面测试
比如:用猿大师在新版Chrome调用Adobe pdf reader的OCX控件打开PDF文档,如下图:
用猿大师在新版Chrome调用福昕OFD版式办公套件的OCX控件打开PDF文档,如下图:
用猿大师在新版Chrome调用VLC播放器播放RTSP视频流,如下图:
用猿大师在新版Chrome调用IE浏览器登陆中国工商银行个人网页页面,如下图:
中国工商银行个人网页登陆页面只能在IE浏览器登陆,如果用Chrome等最新浏览器登陆会提示如下错误:
这样可以直接原来在IE下使用的ActiveX控件直接用猿大师中间件通用OCX程序直接嵌入新版Chrome等主流浏览器,而不需要桌面程序和ActiveX控件源代码,也不需要提供SDK来定制开发。
猿大师中间件官网:http://www.yuanmaster.com/
以下是未单独封装OCX控件接口功能的通用请求方法
11)、请求获取属性值
Name 指定属性名称 如遇到取子接口的,名称增加子接口的名称,支持多级,比如获取VLC播放列表的数量名称用playlist.itemCount 下同
{"req":"OCX_GetProperty","rid":11,"para":{"Name":"src"}}
{"req":"OCX_GetProperty","rid":11,"para":{"Name":"volume"}}
{"req":"OCX_GetProperty","rid":11,"para":{"Name":"Toolbar"}}
{"req":"OCX_GetProperty","rid":11,"para":{"Name":"playlist.itemCount"}}
{"req":"OCX_GetProperty","rid":11,"para":{"Name":"input.rate"}}
{"req":"OCX_PutProperty","rid":11,"para":{"Name":"video.logo.opacity"}}
返回: {"ret":0,"rid":11,"data":{"Ret":0,"Val":""}}
如果返回的是自动化接口,Val的值类似这样的:playlist={CatchDispatch},需要继续调用这个自动化接口的属性或方法时,接下来的请求里指定参数{CatchDispatch},否则默认调用控件主接口的,下同
12)、请求设置属性
Name 指定属性名称 如遇到设置子接口的,名称增加子接口的名称,支持多级
Val 指定属性值,字符串用""包含,字符串中包含\或"等字符时,需要加转义符\,数值型不用"",BOOL类型设置真时数值是-1
当需要释放缓存的自动化接口时,Name可以指定为类似这样的playlist={CatchDispatch},Val设置为0或空
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"src","Val":"d:/zorro/test.pdf"}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"Toolbar","Val":-1}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"Visible","Val":-1}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"volume","Val":0}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"input.rate","Val":2}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"video.logo.opacity","Val":50}}
{"req":"OCX_PutProperty","rid":12,"para":{"Name":"playlist={CatchDispatch}","Val"0}}
返回: {"ret":0,"rid":12,"data":{"Ret":0}}
13)、请求无传入参数方法
Name 指定方法名称 如遇到调用子接口的,名称增加子接口的名称,支持多级,比如调用VLC播放列表播放方法名称用playlist.play 下同
DID 也可以指定方法序号
{"req":"OCX_Invoke0","rid":13,"para":{"Name":"gotoFirstPage"}}
{"req":"OCX_Invoke0","rid":13,"para":{"Name":"gotoNextPage"}}
{"req":"OCX_Invoke0","rid":13,"para":{"Name":"
playlist.play"}}
返回: {"ret":0,"rid":13,"data":{"Ret":0,"Val":""}}