PluginOK中间件发布重大更新版本—直接支持绝大多数桌面程序和ActiveX控件窗口内嵌运行到浏览器网页中!

        PluginOK中间件自从2019年发布以来,迄今为止不断迭代升级,给第三方提供了将自己的桌面程序和OCX控件支持直接内嵌到浏览器网页运行的赋能SDK开发包,并针对在浏览器中无法直接原生低延迟多路播放RTSP视频流需求发布了VLC网页播放器和多引擎网页播放器,做到了在浏览器网页中实现和桌面程序一致播放性能的效果,得到了用户的高度认可。然后针对市场上因为谷歌等浏览器升级导致原来的一些WebOffice控件无法继续使用的问题,发布了适配微软Office、金山WPS、永中Office的Office网页组件,并且支持同时安装了微软Office和金山WPS等情况下的使用,除了提供OLE嵌入模式外,相对以前的WebOffice控件提供了更安全的文档数据保护机制,还提供了完整嵌入整个Office软件窗口的模式,功能更全面,由于Office VBA的接口非常丰富,之前我们只是针对常用功能做了封装,近期也提供了其通用的VBA所有接口调用方式。在一些中大型央国企OA系统中集成使用,也得到了用户的普遍认可。此外,我们还针对工程设计领域的CAD软件提供了嵌入实现的范例,包括不限于AutoCAD、Solidworks、CATIA、国产中望CAD软件的主流版本,还针对这些设计软件生成的工程图提供了网页中看图审图控件的集成方案,包括不限于支持dwg、dxf、CATPart、frm、xt、sldprt、jt等各种主流的工程图文档。

        虽然我们重点提供了以上三个领域的重点解决方案,但毕竟客户的业务繁多,经常有客户来咨询其它一些桌面程序和原来在IE下使用的ActiveX控件能否直接支持使用,不用自己根据提供的SDK来定制开发,毕竟业术有专攻,一些客户并没有相关的专业人才,而且提到的桌面程序和ActiveX控件未必有源代码,改造起来存在不可逾越的障碍。经过佐罗软件工程师的不懈努力,客户的愿望可以实现啦!今天,我们正式发布两款通用型高级内嵌网页的小程序,分别是Exe网页内嵌小程序和OCX内嵌网页小程序,下面分别针对这两个小程序做一些说明,供大家选用参考。

  • EXE内嵌网页小程序,只需要指定终端电脑中已经安装的exe文件位置,并指定需要打开的文档路径,通过这个小程序即可启动对应的exe软件并打开指定的文档,exe软件窗口同时实现直接内嵌到网页指定区域运行,也可以指定自动适配网页区显示运行。如果您不确定指定的文档需要用哪个exe文件来打开,也可以不指定确定的exe软件路径,只需要指定需要打开的文档,小程序会自动读取当前系统设置的文件格式关联程序来打开,充分展示了PluginOK中间件实现在浏览器中内嵌各种窗口小程序的通用性和兼容性。这种方式内嵌运行exe桌面程序,可以给前端提供的开发接口有限,仅限于打开文档和关闭等功能,如果想支持更多可控的功能,最好还是基于SDK将原来的桌面程序进行改造,想给前端提供啥样的支持都可以。在线体验网页:当前页内嵌EXE运行小程序 实现整个网页区显示嵌入的桌面程序窗口,而实现指定区域显示的体验网页请点击这里:当前页内嵌EXE运行小程序测试(PluginOK)
  • OCX网页内嵌小程序,只需要指定OCX控件的ClassID或ProgID,包括不限于IE中使用的ActiveX控件,只要有持续交互的窗口,都可以使用。而且给前端提供了控件暴露的全功能自动化接口调用方式。以Adobe Pdf Reader控件为例的在线体验网页:当前页内嵌ActiveX网页小程序 ,局部嵌入的在线体验网页点击这里:当前页内嵌ActiveX网页小程序测试(PluginOK)。以下是可以测试用的控件ClassID,,包括不限于这些:

        Pdf Reader:{CA8A9780-280D-11CF-A24D-444553540000}
        VLC Player:{9BE31822-FDAD-461B-AD51-BE1D1C159921}
        IE WebBrowser:{8856F961-340A-11D0-A96B-00C04FD705A2}
        Flash Player:{3A2B370C-BA0A-11D1-B137-0000F8753F5D}
        Dwg Viewer:{4E871D32-203E-4777-B42A-451FC1B2FC90}
        EDrawing Viewer:{22945A69-1191-4DCF-9E6F-409BDE94D101}
        SolidWorks Composer Player:{410B702D-FCFC-46B7-A954-E876C84AE4C0}
        PTC Creo View:{F07443A6-02CF-4215-9413-55EE10D509CC}
        福昕OFD版式办公套件OCX:{9A9F603B-51A8-4630-AE99-4BBF01675575}
        汉王手写签批OCX:{E8F5278C-0C72-4561-8F7E-CCBC3E48C2E3}

        在调用本地exe或ocx控件之前,一般需要提前知道本机是否已经安装,我们也提供了相应的接口,下面是接口说明:

        前端请求指定路径的exe程序或指定的OCX控件是否存在:
PathType是目录类型,参考定义说明:https://learn.microsoft.com/zh-cn/windows/win32/shell/csidl
举例:
检查微软Word程序是否存在
{“req”:”Wrl_CheckExistInfo”,”rid”:25,”para”:{“ExePath”:”Microsoft Office/root/Office16/WINWORD.EXE”,”PathType”:”38″}}
返回:{“ret”:0,”rid”:25,”req”:”Wrl_CheckExistInfo”,”data”:{“Info”:[{“Type”:1,”X64″:1,”Ver”:”16.0.18429.20132″,”Path”:”C:/Program Files/Microsoft Office/root/Office16/WINWORD.EXE”}]}}
检查VLC播放控件是否存在,指定ClassID或PropID 默认取32位的版本,指定Option为1优先取64位的版本
{“req”:”Wrl_CheckExistInfo”,”rid”:26,”para”:{“ClassID”:”{9BE31822-FDAD-461B-AD51-BE1D1C159921}”}}
返回:{“ret”:0,”rid”:26,”req”:”Wrl_CheckExistInfo”,”data”:{“Info”:[{“Type”:1,”X64″:1,”Ver”:”3.0.3″,”Path”:”D:/2.2.17/vlc3/axvlc.dll”}]}}

以下是前端可调用OCX控件自动化接口的通用功能:
1)、请求退出小程序 正常关闭小程序流程和方法:先在此WS连接里请求此功能,前端收到关闭此连接通知时,再关闭到中间件的WS连接 {"req":"OCX_Exit","rid":1,"para":{}} 无返回

2)、请求获取属性值 Name 指定属性名称 如遇到取子接口的,名称增加子接口的名称,支持多级,比如获取VLC播放列表的数量名称用playlist.itemCount 下同 {"req":"OCX_GetProperty","rid":2,"para":{"Name":"src"}} {"req":"OCX_GetProperty","rid":2,"para":{"Name":"volume"}} {"req":"OCX_GetProperty","rid":2,"para":{"Name":"Toolbar"}} {"req":"OCX_GetProperty","rid":2,"para":{"Name":"playlist.itemCount"}} {"req":"OCX_GetProperty","rid":2,"para":{"Name":"input.rate"}} {"req":"OCX_PutProperty","rid":2,"para":{"Name":"video.logo.opacity"}} 返回: {"ret":0,"rid":2,"data":{"Ret":0,"Val":""}} 如果返回的是自动化接口,Val的值类似这样的:playlist={CatchDispatch},需要继续调用这个自动化接口的属性或方法时,接下来的请求里指定参数{CatchDispatch},否则默认调用控件主接口的,下同

3)、请求设置属性 Name 指定属性名称 如遇到设置子接口的,名称增加子接口的名称,支持多级 Val 指定属性值,字符串用""包含,字符串中包含\或"等字符时,需要加转义符\,数值型不用"",BOOL类型设置真时数值是-1 当需要释放缓存的自动化接口时,Name可以指定为类似这样的playlist={CatchDispatch},Val设置为0或空 {"req":"OCX_PutProperty","rid":3,"para":{"Name":"src","Val":"d:/zorro/test.pdf"}} {"req":"OCX_PutProperty","rid":3,"para":{"Name":"Toolbar","Val":-1}} {"req":"OCX_PutProperty","rid":3,"para":{"Name":"Visible","Val":-1}} {"req":"OCX_PutProperty","rid":3,"para":{"Name":"volume","Val":0}} {"req":"OCX_PutProperty","rid":3,"para":{"Name":"input.rate","Val":2}} {"req":"OCX_PutProperty","rid":3,"para":{"Name":"video.logo.opacity","Val":50}} {"req":"OCX_PutProperty","rid":3,"para":{"Name":"playlist={CatchDispatch}","Val"0}} 返回: {"ret":0,"rid":3,"data":{"Ret":0}}

4)、请求无传入参数方法 Name 指定方法名称 如遇到调用子接口的,名称增加子接口的名称,支持多级,比如调用VLC播放列表播放方法名称用playlist.play 下同 DID 也可以指定方法序号 {"req":"OCX_Invoke0","rid":4,"para":{"Name":"gotoFirstPage"}} {"req":"OCX_Invoke0","rid":4,"para":{"Name":"gotoNextPage"}} {"req":"OCX_Invoke0","rid":4,"para":{"Name":"playlist.play"}} 返回: {"ret":0,"rid":4,"data":{"Ret":0,"Val":""}}

5)、请求只传入1个参数方法 Name 指定方法名称 如遇到调用子接口的,名称增加子接口的名称,支持多级,比如调用VLC播放列表播放方法名称用playlist.add 下同 DID 也可以指定方法序号 Para1 对应参数值 ,字符串用""包含,字符串中包含\或"等字符时,需要加转义符\,数值型不用"";参数如果需要再次调用自动化接口获取的值,可以这样传参{DispatchPara}=playlist.itemCount 下同 {"req":"OCX_Invoke1","rid":5,"para":{"Name":"LoadFile","Para1":"d:/zorro/test.pdf"}} {"req":"OCX_Invoke1","rid":5,"para":{"Name":"setShowToolbar","Para1":0}} {"req":"OCX_Invoke1","rid":5,"para":{"Name":"video.logo.file","Para1":"D:\\Zorro\\test.png"}} {"req":"OCX_Invoke1","rid":5,"para":{"Name":"playlist.add","Para1":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4"}} 返回: {"ret":0,"rid":5,"data":{"Ret":0,"Val":""}}

6)、请求只传入2个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1和Para2分别对应参数1和2数值 如果需要传缓存的自动化接口,可以这样传参{CatchDispatch}=playlist {"req":"OCX_Invoke2","rid":5,"para":{"Name":"printPages","Para1":1,"Para2":2}} 返回: {"ret":0,"rid":5,"data":{"Ret":0,"Val":""}}

7)、请求只传入3个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3分别对应参数1、2和3的数值 {"req":"OCX_Invoke3","rid":6,"para":{"Name":"printPagesFit","Para1":"1","Para2":"2","Para3":"0"}} 返回: {"ret":0,"rid":6,"data":{"Ret":0,"Val":""}}

8)、请求只传入4个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4分别对应参数1、2、3和4的数值 {"req":"OCX_Invoke4","rid":7,"para":{"Name":"setCurrentHighlight","Para1":255,"Para2":0,"Para3":255,"Para4":0}} 返回: {"ret":0,"rid":7,"data":{"Ret":0,"Val":""}}

9)、请求只传入5个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5分别对应参数1、2、3、4和5的数值 {"req":"OCX_Invoke5","rid":8,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":""}} 返回: {"ret":0,"rid":8,"data":{"Ret":0,"Val":""}}

10)、请求只传入6个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6分别对应参数1、2、3、4、5和6的数值 {"req":"OCX_Invoke6","rid":9,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":""}} 返回: {"ret":0,"rid":9,"data":{"Ret":0,"Val":""}}

11)、请求只传入7个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6、Para7分别对应参数1、2、3、4、5、6和7的数值 {"req":"OCX_Invoke7","rid":10,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":"","Para7":""}} 返回: {"ret":0,"rid":10,"data":{"Ret":0,"Val":""}}

12)、请求只传入8个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6、Para7、Para8分别对应参数1、2、3、4、5、6、7、8的数值 {"req":"OCX_Invoke8","rid":12,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":"","Para7":"","Para8":""}} 返回: {"ret":0,"rid":12,"data":{"Ret":0,"Val":""}}

13)、请求只传入9个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6、Para7、Para8、Para9分别对应参数1、2、3、4、5、6、7、8、9的数值 {"req":"OCX_Invoke9","rid":13,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":"","Para7":"","Para8":"","Para9":""}} 返回: {"ret":0,"rid":13,"data":{"Ret":0,"Val":""}}

14)、请求只传入10个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6、Para7、Para8、Para9、Para10分别对应参数1、2、3、4、5、6、7、8、9、10的数值 {"req":"OCX_InvokeA","rid":14,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":"","Para7":"","Para8":"","Para9":"","Para10":""}} 返回: {"ret":0,"rid":14,"data":{"Ret":0,"Val":""}}

15)、请求只传入11个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6、Para7、Para8、Para9、Para10、Para11分别对应参数1、2、3、4、5、6、7、8、9、10、11的数值 {"req":"OCX_InvokeB","rid":15,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":"","Para7":"","Para8":"","Para9":"","Para10":"","Para11":""}} 返回: {"ret":0,"rid":15,"data":{"Ret":0,"Val":""}}

16)、请求只传入12个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6、Para7、Para8、Para9、Para10、Para11、Para12分别对应参数1、2、3、4、5、6、7、8、9、10、11、12的数值 {"req":"OCX_InvokeC","rid":16,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":"","Para7":"","Para8":"","Para9":"","Para10":"","Para11":"","Para12":""}} 返回: {"ret":0,"rid":16,"data":{"Ret":0,"Val":""}}

17)、请求只传入13个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6、Para7、Para8、Para9、Para10、Para11、Para12、Para13分别对应参数1、2、3、4、5、6、7、8、9、10、11、12、13的数值 {"req":"OCX_InvokeD","rid":17,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":"","Para7":"","Para8":"","Para9":"","Para10":"","Para11":"","Para12":"","Para13":""}} 返回: {"ret":0,"rid":17,"data":{"Ret":0,"Val":""}}

18)、请求只传入14个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6、Para7、Para8、Para9、Para10、Para11、Para12、Para13、Para14分别对应参数1、2、3、4、5、6、7、8、9、10、11、12、13、14的数值 {"req":"OCX_InvokeE","rid":18,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":"","Para7":"","Para8":"","Para9":"","Para10":"","Para11":"","Para12":"","Para13":"","Para14":""}} 返回: {"ret":0,"rid":18,"data":{"Ret":0,"Val":""}}

19)、请求只传入15个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6、Para7、Para8、Para9、Para10、Para11、Para12、Para13、Para14、Para15分别对应参数1、2、3、4、5、6、7、8、9、10、11、12、13、14、15的数值 {"req":"OCX_InvokeF","rid":19,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":"","Para7":"","Para8":"","Para9":"","Para10":"","Para11":"","Para12":"","Para13":"","Para14":"","Para15":""}} 返回: {"ret":0,"rid":19,"data":{"Ret":0,"Val":""}}

20)、请求只传入16个参数方法 Name 指定方法名称 DID 也可以指定方法序号 Para1、Para2、Para3、Para4、Para5、Para6、Para7、Para8、Para9、Para10、Para11、Para12、Para13、Para14、Para15、Para16分别对应参数1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16的数值 {"req":"OCX_InvokeG","rid":20,"para":{"Name":"","Para1":"","Para2":"","Para3":"","Para4":"","Para5":"","Para6":"","Para7":"","Para8":"","Para9":"","Para10":"","Para11":"","Para12":"","Para13":"","Para14":"","Para15":"","Para16":""}} 返回: {"ret":0,"rid":20,"data":{"Ret":0,"Val":""}}

公司动态

发表评论

联系我们

联系我们

400-683-1589

在线咨询:contact_me_qr

邮件:service@zorrosoft.com

工作时间:周一至周五,9:30-18:30,节假日休息

在线咨询
在线咨询
分享本页
返回顶部