diff --git a/Bin/AIPSignApplet.txt b/Bin/AIPSignApplet.txt new file mode 100644 index 0000000000000000000000000000000000000000..3fe1e38b6f0c23112c4171734a7ffbf673baefd7 --- /dev/null +++ b/Bin/AIPSignApplet.txt @@ -0,0 +1,1312 @@ +点聚AIP电子签章内嵌网页小程序:基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )开发,底层调用北京点聚信息技术有限公司的ActiveX控件(3.1版)HWPostil.ocx(此控件版权归北京点聚信息技术有限公司所有)实现。最低可用在Chrome 41、Firefox 52、Edge 80(Chromium内核)、360极速/安全、IE 8、Oprea 36、QQ等浏览器,也兼容运行于这些浏览器的最新版本。 + +1、PluginOK(牛插)中间件的安装: +1)、如果是exe的安装程序,请直接运行安装; +2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装。 + +2、AIP电子签章内嵌网页小程序控制相关接口: +说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。 +HTTP网页在线测试:http://zorrosoft.com/aipfull.html HTTPS网页在线测试:https://zorrosoft.com/aipframe.html +前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码; +A、标记小程序的显示位置和大小 +.AIPSignApplet { + margin: 20px 0 0 20px; + width: 480px; + height: 320px; + border: 1px solid blue; + } +或者 +.AIPSignApplet { + width: 480px; + height: 320px; + top: 20px; + left: 20px; + border: 1px solid blue; + } +B、嵌入 +支持IFrame的: + +或者直接用 +
+ +另外需要嵌入用到的JS脚本,脚本程序是完全开源的。 + +1)、请求启动Autodesk内嵌网页小程序实现网页中局部加载dwg/dxf等文档进行操作: +Type为浏览器类型,传0自动判断(前提是当前浏览器已启动并显示在最前端,Flag指定当前页加载时必须是0) 可强制指定浏览器类型Type(2代表Chrome 4代表Firefox 8代表Opera 16代表Edge(Chromium内核) 32代表360极速浏览器 33代表360安全浏览器 34代表360企业安全浏览器 50代表QQ浏览器 60代表搜狗浏览器) +Title:网页标题中的关键词 +Flag掩码标记:1指定新标签加载(1和16都不指定时为当前页加载) 2小程序显示窗口边框 4不自动裁剪越界窗口 8自动适配网页高度和宽度显示 64根据标题避免重复加载相同的小程序 +IframeX和IframeY分别为iframe嵌套的横竖偏移修正坐标 +BarW和BarH分别是网页右侧和底部预留区域 +小程序实际显示首先会基于网页中指定的坐标和大小,再根据IframeX、IframeY、BarW、BarH设定的值做修正 +App:0启动AutoCAD实现在线编辑(推荐用2015及以上版本,可根据具体版本定制) 1启动DWG True View在线查看和转换 2启动Design Review在线审阅 +Url:加载小程序所在的网页实际地址 +Open:为需要打开的文档路径,磁盘目录斜杠用/ +注意:Open和Url如果有特殊字符或中文等,需要用URL编码处理后传递 +举例: +自动识别当前浏览器并启动AutoCAD程序在线编辑dwg、dxf等文档 +{"req":"Wrl_ACADApplet","rid":5,"para":{"Type":"0","Title":"Autodesk Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/acadframe.html","App":"0","Open":"D:/Zorro/test.dwg"}} + +自动识别当前浏览器并启动DWG True View程序在线查看或转换dwg文档 +{"req":"Wrl_ACADApplet","rid":6,"para":{"Type":"0","Title":"Autodesk Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/acadframe.html","App":"1","Open":"D:/Zorro/test.dwg"}} + +自动识别当前浏览器并启动Design Review程序在线审阅dwg、dxf文档 +{"req":"Wrl_ACADApplet","rid":7,"para":{"Type":"0","Title":"Autodesk Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/acadframe.html","App":"2","Open":"D:/Zorro/test.dwg"}} + +自动识别当前浏览器指定位置自动适配网页大小启动: +{"req":"Wrl_ACADApplet","rid":8,"para":{"Type":"0","Title":"Autodesk Applet","Flag":9,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/acadfull.html","App":"0","Open":"D:/Zorro/test.dwg"}} + +当前页指定位置自动适配网页加载测试 +http://zorrosoft.com/acadframe.html + +启动后会前后收到两个JSON数据包 +A、{"ret":0,"rid":1,"data":{"ID":3}} +返回ID为当前小程序运行ID,通过此ID,可执行Wrl_AppletControl、Wrl_AppletScroll、Wrl_AppletResize等命令。 +B、{"event":"Wrl_Listen","aid":3,"data":{"SID":"123","PID":"997599C3-3C4D-445E-B741-0AD934B45459","Port":990}} +返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如新打开一个网页。 + +2)、请求控制Autodesk内嵌网页小程序: +当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等 +ID为启动小程序时返回JSON中的ID值,Code代表控制类型掩码:1关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,4和32隐藏后可通过8恢复显示 +{"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}} + +3)、请求滚动Autodesk内嵌网页小程序: +当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动 +ID为启动小程序时返回JSON中的ID值 +Code为滚动方向1是水平直,2是垂直,3是同时 +Left为横向滚动条位置,Top为纵向滚动条位置 +{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}} + +4)、请求改变Autodesk内嵌网页小程序显示位置或大小: +当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小 +ID为启动小程序时返回JSON中的ID值,Width和Height分别为新的宽度和高度,X和Y分别为新的显示位置,不指定时保持不变,指定时原设置的IframeX和IframeY失效 +{"req":"Wrl_AppletResize","rid":4,"para":{"ID":1,"Width":500,"Height":600}} +或同时设置小程序显示起始坐标 +{"req":"Wrl_AppletResize","rid":5,"para":{"ID":1,"Width":500,"Height":600,"X":20,"Y":20}} + +5)、请求设置网页预留右侧宽度和底部高度,滚动条信息、垂直滚动及水平滚动位置: +当小程序显示区域超过当前网页时,需去除滚动条的显示影响 +ID为启动小程序时返回JSON中的ID值,BarW为预留右侧宽度 BarH为预留底部高度 +Code 1代表有水平滚动条,2代表有垂直滚动条,3代表都有 +ScrollTop垂直滚动条位置 ScrollTop水平滚动条位置 +{"req":"Wrl_ScrollBar","rid":6,"para":{"ID":"1","Code":2,"BarW":0,"BarH":0,"ScrollTop":0,"ScrollLeft":0}} + +6)、请求缩放微软Autodesk内嵌网页小程序,用于浏览器网页按比例缩放,一般不需要处理: +ID为启动小程序时返回JSON中的ID值,Scall为缩放百分比 +{"req":"Wrl_AppletScale","rid":7,"para":{"ID":1,"Scale":120}} + +3、小程序安装、升级、卸载 +1)、请求安装Autodesk内嵌网页小程序 +请在输入框中,输入如下请求,然后点击发送,完成安装: + +{"req":"Plugin_Install","rid":1,"para":{"Name":"Autodesk内嵌网页小程序","PID":"997599C3-3C4D-445E-B741-0AD934B45459","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的Autodesk内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌AutoCAD等程序进行在线编辑、查看或审阅工程图","DownAddr":"http://local.zorrosoft.com/Files/Plugin/ACadApplet.pid","MD5":"8707024DADD8A827F01EF1FE6B3DAB16","Version":"2.0.3.11","Size":688128,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"65E092DAA42BCC40348F9779A7798E508F68BFCC13FEEF79B377FD82CD709FFA0064E5F1740D2A54D13FD500257496B34CA38A158E3F90824E97E999DE63934582653E1936247142B98CF4B86BF416324975567FB0B486EB741CD1FE67103437C18F2996C176BFD374F5CEAD49A8DFF595B607393004087E9E8CB3DA67579544FD4D69F610144192F82193EB867B00A0B74AE26BD6C2D3F671B76A8D405C2DFFBD778F16B65443DE38C8BE2B3DE027B177FE7319AC23E0F2B269BCCE2E916CAEAB9F3DFB713906A0AEE06A32B6421354349AFB6742C21337358A2EB7EC4A1655A4F4C618D7AA74A56F41C27ED59E202CDC235BA3F5A36027DAFBCEA26480757A"}} + +启动安装后,会不断收到安装进度直到安装结束。 +在发布时,也可以把此小程序目录文件和中间件一起打包后发布,不用单独分发。 + +2)、请求升级Autodesk内嵌网页小程序: + +{"req":"Plugin_Update","rid":1,"para":{"Name":"Autodesk内嵌网页小程序","PID":"997599C3-3C4D-445E-B741-0AD934B45459","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的Autodesk内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌AutoCAD等程序进行在线编辑、查看或审阅工程图","DownAddr":"http://local.zorrosoft.com/Files/Plugin/ACadApplet_Update.pid","MD5":"092BDB17DA72FE833E602A85C0A930FD","Version":"2.0.3.11","Size":688128,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"AF873AE213CFAB5C7C21C65670BF9A43B64D9544F44E0B109F1F712BFE912B41E333357F9A4F59D20E286C28F8E806CAAE13705385015C213E9BDC415701EDD7865A93FF3E8A366BD0992F8E833D9692626834B5278D98BD7F0B0D1892AB8B3B2B34AEA0A213726E5FAA4AB8FB5E0723FC8A8B01F518D9F1CA58836A7B4F2DF01D30D6C7F0452C124FD95EF12625092022BF721580AEC7C3221A2722074F3C767FD2009CAA2AA7B685BFFBC7ABE61C75E2F87739241F393F9328A441895061BE3E4333F7FC1C6124DA08CF307E00EAE69792AC423D790D425F5AABE5BE794A949F03B3B4A38815DBA0FFD336603D099D9BB1BA06F932FF6381A20473461FBE3D"}} + +以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。 + +3)、请求卸载Autodesk内嵌网页小程序: + +{"req":"Plugin_Remove","rid":3,"para":{"PID":"997599C3-3C4D-445E-B741-0AD934B45459","Type":8}} + +4、Autodesk内嵌网页小程序转调用Autodesk的AutoCAD软件VBA接口及DWG True View或Design Review的OCX控件接口,先根据Wrl_ACADApplet请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令: +A、常用功能请求: + +请求退出小程序 +{"req":"ACAD_Exit","rid":1,"para":{}} +请求关闭文档 +{"req":"ACAD_Close","rid":2,"para":{}} +请求打开文档 +{"req":"ACAD_Open","rid":3,"para":{"Open":"D:/Zorro/test.dwg"}} + +5、事件通知: +A、 + +B、PluginOK支持的事件通知: + +1) 小程序是否响应了热键全屏 +{"event":"ACAD_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记 + +2) Wrl_AppletExit 小程序退出通知 +{"event":"Wrl_AppletExit","data":{"ID":1}} + +6、其它 +请求参数的JSON数据包,请确保是UTF-8无签名的编码。 +更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.doc”及“PluginOK中间件安全解决方案”。 +如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938 \ No newline at end of file diff --git a/Bin/ChangeLog.txt b/Bin/ChangeLog.txt new file mode 100644 index 0000000000000000000000000000000000000000..3014632e40b7aec0d546d63f1f248c2fca872ad2 --- /dev/null +++ b/Bin/ChangeLog.txt @@ -0,0 +1,164 @@ +2020-12-12 PluginOK升级网络版2.0.7.6(单机版1.2.18.6) + 1、发布Autodesk公司内嵌网页小程序体验版,支持内嵌AutoCAD软件、DWG True View及Design Review的OCX控件实现可程序化驱动的dwg等工程图在线编辑、查看、审阅等,搭配文件操作小程序可实现工程图文件的下载后自动打开编辑、保存后自动上传服务器管理; + 2、网络版支持前端请求自动移除指定终端电脑授权并卸载,回收可用授权数量; + 3、小程序侦听IP可设置为实际IP,而非127.0.0.1并输出日志; + 4、解决内嵌小程序首次启动运行可能失败问题; + 5、解决本地路径的小程序安装可能失败问题; + 6、解决数据文件目录初始化设置可能错误问题; + 7、更新范例小程序及中间件开发版授权截止日期。 + +2020-11-11 PluginOK升级网络版2.0.7.5(单机版1.2.18.5) + 1、改进前端请求内嵌小程序的全屏显示及退出全屏实现; + 2、延迟高级版服务运行启动到桌面时的提示运行问题; + 4、安装时增加自动注册C#无窗小程序及小程序的COM组件; + 5、解决内嵌小程序加载多个操作时可能浏览器卡死问题; + 6、解决前端WS可能无法成功连接中间件或小程序问题; + 7、改进解析网页中内嵌小程序的大小和位置参数算法; + 8、解决服务运行时调用Wrl_OpenFile和Wrl_OpenUrl不显示问题; + 9、解决自绘内嵌小程序在滚动时的刷新显示问题; + 10、解决内嵌小程序启动时可能不显示和释放时可能崩溃问题; + 11、各内嵌小程序添加在自连接中请求退出功能; + 12、解决VLC网页小程序可能无法选中和选中后全屏显示问题; + 13、VLC网页小程序增加设置TCP方式播放RTSP,初始化播放多个源; + 14、VLC网页小程序支持使用绿色版VLC播放控件; + 15、IE控件及标签页小程序支持更多请求协议。 + +2020-10-26 PluginOK升级网络版2.0.7.2(单机版1.2.18.2) + 1、所有执行程序和动态库等支持本公司的中文描述及双证书代码签名; + 2、完善VLC网页内嵌的多媒体播放小程序功能,支持动态切换分屏数; + 3、增加协议Wrl_UpdateSslCert支持在前端导入更新有效期后的SSL证书; + 4、Wrl_RegCom用于非小程序重新注册时需增加TK校验; + 5、解决WS连接释放时可能导致CPU占用可能高或服务重启问题; + 6、优化IE中所用的WS连接组件性能,增加连接超时设置; + 7、解决不同网页中启动同一个小程序时越来越慢的问题; + 8、解决加载多个小程序后浏览器放大缩小等操作后界面响应迟缓问题。 + +2020-10-09 PluginOK升级网络版2.0.6.5(单机版1.2.17.5) + 1、正式发布文件操作小程序; + 2、正式发布VLC内嵌网页的多媒体播放小程序; + 3、正式发布点聚电子签章内嵌网页小程序; + 4、修改标准版启动监控程序方式,避免弹窗提示; + 5、解决Chrome 84版开始WSS连接失败问题; + 6、解决前端请求Wrl_RegCom可能失败问题; + 7、解决内嵌网页小程序启动时可能失败问题。 + +2020-09-29 PluginOK升级网络版2.0.6.3(单机版1.2.17.3) + 1、正式版中支持调试内嵌小程序; + 2、中间件支持获取当前网络路由器MAC地址; + 3、支持前端请求切换中间件程序是否服务模式运行; + 4、配置文件中增加服务监控有效时间判断参数; + 5、优化非系统服务运行模式小程序适配性能和效果; + 6、解决无窗口小程序请求超时导致服务重启问题; + 7、解决非系统服务运行模式下热插拔U盘监控问题; + 8、解决Windows7下IE小程序指定内核版本无效问题; + 9、解决网络版可能无法从服务端获取授权信息问题; + 10、解决本机无HOSTS文件时配置SSL证书代理问题。 + +2020-09-15 PluginOK升级网络版2.0.6.1(单机版1.2.17.1) + 1、中间件主程序支持非系统服务的方式运行; + 2、前端支持URL Protocol启动中间件主程序; + 3、改进Windows 10下启动内嵌小程序时使用体验; + 4、优化Windows 7及XP系统内嵌小程序的显示效果; + 5、优化加载多个内嵌小程序时的运行性能; + 6、优化开启U盘使用监控和前端的交互信息; + 7、解决重启系统时服务运行可能不正常问题; + 8、解决重新安装中间件时服务可能不正常问题; + 9、解决加载本地安装包或升级包时不能继续问题; + 10、优化小程序底部和网页的滚动条重叠时的显示; + 11、解决浏览器最小化后再恢复时内嵌小程序状态修复; + 12、修复加载IE内嵌小程序指定内核版本不生效问题; + 13、优化屏蔽日志输出,加快系统运行速度; + 14、优化网络请求及解决反馈的其它问题。 + +2020-08-24 PluginOK升级网络版2.0.3.2(单机版1.2.15.2) + 1、IE小程序支持64位版; + 2、优化前端判断滚动条算法; + 3、升级内嵌小程序接口支持更多功能; + 4、优化内嵌小程序运行过程; + 5、优化弹窗小程序启动效果; + 6、升级VLC内嵌网页播放小程序,支持多窗口播放; + 7、优化Windows 7下内嵌小程序适配。 + +2020-08-13 2.0.2.1 PluginOK网络正式版(单机正式版1.2.12.2) + 1、切换软件授权模式,支持可独立部署的网络版,原单机版客户可继续使用并获得升级服务,网络版文件名前缀由Wrl改为Zba,和原单机版可同时运行; + 2、增加获取本地指定文件信息的协议Wrl_GetFileInfo,支持获取文件大小、文件属性、文件MD5、文件版本、文件创建及修改时间、图像宽度及高度等; + 3、网络版配置文件名ZbaConfig.json,增加语言配置Language及服务端ServerAddr地址及ServerPort端口,配置生效目录改为Data目录(原单机版升级后WrlConfig.json生效目录也改为Data目录); + 4、去掉系统重启过程中可能尝试重新注册服务的操作; + 5、IE小程序支持注入脚本、执行脚本、调用脚本函数等; + 6、发布微软Office及金山WPS内嵌网页小程序体验版; + 7、发布VLC内嵌网页播放小程序体验版; + 8、解决反馈的其它问题。 + +2020-07-13 1.2.11.1 发布PluginOK高级版(支持内嵌网页窗口小程序) + 1、实现在浏览器网页中内嵌窗口小程序运行,支持同时加载多个运行,支持上下左右滚动小程序; + 2、实现在Chrome、Firefox、Edge、Opera、IE、360、QQ等浏览器网页可加载IE指定版本内核的控件小程序或标签小程序运行; + 3、发布在Chrome、Firefox、Edge、Opera、IE、360、QQ等浏览器中运行的Flash Player内嵌窗口小程序; + 4、内嵌网页窗口小程序支持Windows XP及以上桌面及服务操作系统,兼容低版本的IE8及Chrome 41等; + 5、升级安装程序,安装或升级包的JSON请求数据包中支持用本地路径,不用单独部署HTTP服务器来测试; + 6、基础版功能增加单选或多选文件、选择文件保存路径、选择目录的功能; + 7、修改PluginOK之上运行的插件名称,统一改为小程序; + 8、解决IE中使用的Web Socket连接组件不稳定等问题; + 9、基础版功能实现对Edge新内核版兼容支持; + 10、解决历史版本中反馈的问题。 + +2019-11-07 1.1.1.5 + 1、实现关联打开本地文件协议Wrl_OpenFile,不支持exe、bat、msi、jar等可执行程序; + 2、解决启动exe插件时不返回侦听端口问题; + 3、解决协议Wrl_OpenUrl对XP兼容性问题; + 4、解决XP下获取电脑信息及当前登录用户错误问题; + 5、解决正式版授权误弹未授权提示; + 6、解决Wrl_Version协议指定More时获取当前登录用户错误问题; + 7、优化Wrl_OpenUrl协议请求返回进程ID及窗口句柄; + 8、优化Wrl_RegCom协议不指定插件ID时实现为重新注册中间件,连接会断开; + 9、Wrl_Version协议请求指定More可获取当前登录用户、当前电脑制造商及型号等信息; + 10、添加重新注册框架组件或指定插件协议Wrl_RegCom,用于恢复可能被破坏的注册项目; + 11、解决安装无界面DLL插件后需要重启服务才能正常请求插件功能问题; + 12、实现用指定浏览器指定URL; + 13、插件升级安装或框架升级时,支持无界面的静默安装模式; + 14、实现刷新插件加载协议,方便插件开发调试,无需手工重启服务; + 15、查询插件或插件列表时可指定返回插件程序全路径; + 16、解决多个网卡情况指定返回本机MAC地址信息错误问题; + 17、WrlConfig.json可配置卸载或重启框架请求中的有效期。 + +2019-10-10 1.0.9.15 + 1、单独提供一个升级框架授权文件的功能; + 2、解决EXE类型插件可能无法创建通信组件实例问题; + 3、修改一些提示语; + 4、支持C#插件自注册; + 5、优化EXE插件启动兼容性; + 6、增强插件DLL加载路径依赖; + 7、版本获取时支持本地Mac信息; + 8、解决打包工具文件大小0时执行无法结束问题; + 9、解决授权过期时服务不断重启问题; + 10、解决前端发送过长JSON数据包的兼容问题; + 11、优化性能及稳定性。 + +2019-06-29 1.0.9.9 + 1、完善平台与插件之间授权机制及优化内存操作; + 2、正式版请求插件服务提供不校验TK选择; + 3、解决C#插件卸载错误问题; + 4、解决打包工具可能报错问题; + 5、解决插件打包时RSA秘钥不设置密码引发的问题; + 6、解决EXE插件运行初始化数据错误问题; + 7、安装程序添加静默安装支持; + 8、修复安装程序启动后没自动显示到前端问题; + 9、插件包中启动的一次性安装附加程序改为校验DM5是否启动; + 10、解决个别目录安装后写数据权限不够导致无法正常加载EXE插件问题; + 11、优化程序临时文件处理; + 12、执行程序加入360安全卫士的白名单。 + +2019-05-05 1.0.8.12 + 1、改进IE中使用的WEB SOCKET连接组件; + 2、完善安装卸载命令行,不用每次填写实际的路径; + 3、修复启动EXE插件不推送端口问题; + 4、改进插件卸载和启动插件流程; + 5、启用新的产品LOGO; + 6、 升级框架支持C#无界面插件开发及调用; + 7、打包工具增加输出JAVA所需的公钥证书类型; + 8、增加IE浏览器中所用的WEB SOCKET连接网页测试页面; + 9、 框架升级、插件下载请求添加Cookie和Auth参数以支持有权限的下载,涉及底层网络操作组件接口变更; + 10、解决远程云端连接时可能启动EXE插件失败问题; + 11、解决插件更新安装时覆盖失败加载错误问题,安装结束时强制重启主服务。 + +2019-04-11 1.0.6.2 + 第一个正式发布版本。PluginOK(牛插)中间件是一个实现网页浏览器(Web Browser)与本地程序(Local App)之间进行双向调用的低成本、强兼容、安全可控、轻量级、易集成、可扩展、跨浏览器的小程序系统。通过此中间件可实现网页前端JS脚本无障碍操作本地电脑各种硬件、调用本地系统API及相关组件功能,可彻底解决DLL模块、ActiveX控件及自动化程序(如微软Office、金山WPS、AutoCAD等)在Chrome、Edge、360、FireFox、IE、Opera、QQ、搜狗等浏览器各版本中的嵌入使用问题,媲美原Java Applet的效果。 diff --git a/Bin/FileApplet.txt b/Bin/FileApplet.txt new file mode 100644 index 0000000000000000000000000000000000000000..0ab96ed142f033cfb30cac14163128ca01defc91 --- /dev/null +++ b/Bin/FileApplet.txt @@ -0,0 +1,100 @@ +ļС򣬻ڿСϵͳ-PluginOK(ţ)м(https://github.com/wangzuohuai/WebRunLocal)ṩļHTTPЭϴءͼļתšļʡسеȷͿChrome 41Firefox 52Edge 80(Chromiumں)360/ȫIE 8Oprea 36QQѹҲЩ°汾 + +1PluginOK(ţ)мİװ +1)exeİװֱаװ +2)ɫijѹijĿ¼˫InstallWrl.batаװ +3)װʱPluginOKмڰװĿ¼µDataĿ¼WrlService.txt־ļ + +2װļС + +{"req":"Plugin_Install","rid":1,"para":{"Name":"ļС","PID":"199BB8A7-9DD5-41F5-AE9D-2AA94300B0B3","Date":"2020-12-12","Desc":"PluginOKм֮ϿļСṩļHTTPЭϴءͼļתļʡسеȷ񣬿ChromeEdgeFirefoxIEOpera360QQȵ°е","DownAddr":"http://local.zorrosoft.com/Files/Plugin/WrlFileApplet.pid","MD5":"371D26B8C6A35A5A48317C04D9EE1735","Version":"2.0.3.11","Size":491520,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"532632DC918676470FC065990C284015B3AD370E260707A7B97A205D6F237BA0011E989380B23F62F6D6BD53451066C85D17EF7317FA564639326F9A411FBD4F9742DAE05A2CADC431511C7FB64247F410547FE68F43D2FDCA799F42B9138D7364A0107590DB17223AC7C3C5AACDDE3755DE2D45BD525B514012F821F8295DB2D95876853CEA999E52EBF36BB544F9DE3F8BE118472C04E8CA26226C294827DC1D53DEBF6241F6DCDE09AC69B537A414BE900ADD9483A0FA94AA8EB1CCFC49C0439AE877B7E0D71AD28E858E7B7234F7388C7AC0D37CE3BFE4E97ACDC1095D939DD520344DFB4CDA531178855413CA6669E44A5637C17E531A022A64E419092E"}} + +3ļС + +{"req":"Plugin_Update","rid":1,"para":{"Name":"ļС","PID":"199BB8A7-9DD5-41F5-AE9D-2AA94300B0B3","Date":"2020-12-12","Desc":"PluginOKм֮ϿļСṩļHTTPЭϴءͼļתļʡسеȷ񣬿ChromeEdgeFirefoxIEOpera360QQȵ°е","DownAddr":"http://local.zorrosoft.com/Files/Plugin/WrlFileApplet_Update.pid","MD5":"7BF5F7F1AA6D6CBA7A040513B8C7D413","Version":"2.0.3.11","Size":491520,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"0DD9E2269A0C5D610AB44C6DB87C883A4BC272EE525320909465B6FDB65DE951E9ACE4B311149B163CA7A42C28DDB22BADA3F157E4886E6F12334BB841C9CA093F7239F478B6ED927D9E9B13BC0DC3C5C5F7C733B9AA0894C5E32B086FD7F6EB934B1609A6786B843FAF5A1CE69AB00D3B8F55DF0D06B997B140F53562F74EF0C0033130C14F248C7D72E753C85A67933D9E7ABA454B03773FFF805EC1CBF06A6310568BCA3C16D8759F21B9EEDB0780F7C66F646E14DEBA9B1F597E9F40C4748215B9908FEF9C7BA0D058A885EEC5F1B4CC33E92224893282F57841A66DEDD5852AC7440C3EFDA8A518D3A8FB1B8BA4159773ED7B83F7A3EB16F81FA809B681"}} + +ϰװJSON汾ݲͬװʱϵͷȡµ + +4ļС +1)ͼļļ +˵¹ͨWeb SocketӺִУĬ˿ڲ80(˿ڣοSDKеĵPluginOKֲ.doc)ӵַָ˿ںŽӡ +򿪲ҳַws://localhost?sid=667&pid=D325C871-AB46-479B-B20E-1D861D26CA89&flag=1 ӣ + +ֵ֧Э鹦£ +Aתͼļ +SrcFileDestFileǰUrlEncode +{"req":"File_RotateImg","rid":1,"para":{"Angle":90,"Items":[{"ID":"11","SrcFile":"C:/Users/trade/Pictures/test/test.png","DestFile":"C:/Users/trade/Pictures/test/testnew.png"}]}} +תָļSrcFileָǶAngleDestFileΪָʱͼļָʱֱӸǵԭͼ + {"ret":0,"rid":1,"data":{"Ret":[{"ID":"","Ret":1},{"ID":"","Ret":1}]}} RetǷɹ + +BָͼļBASE64 +FileǰUrlEncode +{"req":"File_GetImg","rid":2,"para":{"File":"C:/test.jpg","Original":1,"Thumb":{"Width":200,"Height":300,"File":"C:/Newtest.jpg"}}} +ָOriginalΪ1ʱͬʱȡԭͼThumbڵʱȡָСͼThumbڵָFileļ浽أָʱȡԭͼ {"ret":0,"rid":2,"data":{"Thumb":"","Original":"","ThumbFile":"","Ret":1}} + +Cָļִָг +FileǰUrlEncode +{"req":"File_Open","rid":3,"para":{"File":"D:/Zorro/WRL/Data/WrlService.txt"}} FileΪ· +ִָгָļ +{"req":"File_Open","rid":4,"para":{"File":"C:/Windows/System32/notepad.exe D:/Zorro/WRL/Data/WrlService.txt"}} + +Dɾļ +ItemsĿǰUrlEncode +{"req":"File_Delete","rid":5,"para":{"Day":7,"Items":["c:/Newtest.jpg","c:/test.jpg"]}} ɾItemsָıļֶ֧ + +EָĿ¼ +DirǰUrlEncode +{"req":"File_CreateDir","rid":6,"para":{"Dir":"D:/Zorro/WRL/Data/Temp"}} DirΪ· +Ϣ +{"ret":0,"rid":6,"data":{"Ret":"1","ErrCode":0}} + +FɾָĿ¼Ŀ¼ļ +DirǰUrlEncode룬ɾ̸Ŀ¼ϵͳĿ¼ļ +{"req":"File_DelDir","rid":7,"para":{"Dir":"D:/Zorro/WRL/Data/Temp"}} DirΪ· +Ϣ +{"ret":0,"rid":7,"data":{"Ret":"1"}} + +Gȡָļ +DirǰUrlEncode룬ɾ̸Ŀ¼ϵͳĿ¼ļ +{"req":"File_Info","rid":8,"para":{"File":"C:/Users/trade/Pictures/test/test.png"}} FileΪ· +Ϣ +{"ret":0,"rid":8,"data":{"Ret":"1","Size":92095,"MD5":"B28B987EC70E1E7853F89A52CEDE68F0","Attribute":32,"CreateTime":"2020-10-07 13:07:20","LastWriteTime":"2020-07-14 10:09:43","Ver":"","CorpName":"","Desc":"","Width":1280,"Height":720}} + +HȡָĿ¼ļĿ¼б +DirǰUrlEncode룬ɾ̸Ŀ¼ϵͳĿ¼ļ +{"req":"File_List","rid":8,"para":{"Dir":"D:/Zorro/WRL","Find":"*.*"}} DirΪ· +Ϣ +{"ret":0,"rid":8,"data":[{"Name":"WrlSetup.exe","Size":157184,"Attr":2080,"Write":"2020-10-07 15:00:15"},{"Name":"X64"}]} +AttrСSizeļ޸ʱWriteĿ¼ļ + +2)ļHTTPϴط +򿪲ҳַws://localhost?sid=678&pid=762C3400-B3E5-4F00-8AA7-18E00F13E414&flag=1 ӣ +ֵ֧Э鹦£ + +Aļ +UrlFileǰUrlEncode +{"req":"File_Download","rid":1,"para":{"Cookie":"","Auth":"","Items":[{"ID":"","Url":"","File":"","MD5":"","Size":300}]}} ָURLļFileȲļ,IDǰָΨһIDӳɹظIJ㣬Ȩ޲CookieAuth + +Bϴļ +UrlItemsĿǰUrlEncode +{"req":"File_Upload","rid":2,"para":{"ID":"","Url":"","Cookie":"","Auth":"","Para":{},"Items":["c:/Newtest.jpg","c:/test.jpg"]}} ϴָURLıļӳɹظIJ + +Cֹͣϴ/ һҳ˳ +{"req":"File_Stop","rid":3,"para":{""Type":1}} ָֹͣУָTypeʱ1 2ϴ + +Dɾݼ¼ +{"req":"File_Delete","rid":4,"para":{"Day":7}} ɾָDayǰݿеϴ¼ + +/// ֪ͨ +{"event":"File_Status","data":{"ID":"","Url":"","File":"","Type":1,"Status":0,"Percent":0,"Error":""}} StatusΪ״̬(1ȴ 2 ڽ 4ɹ 8ȡ 16) PercentΪٷֱ Error +/// ϴ֪ͨ +{"event":"File_Status","data":{"ID":"","Ret":"","Type":2,"Status":0,"Percent":0,"Error":""}} StatusΪ״̬(1ȴ 2 ڽ 4ɹ 8ȡ 16) PercentΪٷֱ Error RetΪϴɹصݰ + +/// ϴȫ֪ͨ +{"event":"File_OK","data":{"Type":1"}} ֪ͨϴؽType 1ȫ 2ϴȫ + + +5 +JSONݰȷUTF-8ǩı롣 +ӿ˵οװĿ¼еĵTestWrl.txtSDKеġPluginOKֲ.docPluginOKмȫ +绹ֱϵͷ ΢ţZorroSoftQQȺ23126938 \ No newline at end of file diff --git a/Bin/FlashPlayerApplet.txt b/Bin/FlashPlayerApplet.txt new file mode 100644 index 0000000000000000000000000000000000000000..245d3a7235b669db2a74ca5ac036a9b8f72910db --- /dev/null +++ b/Bin/FlashPlayerApplet.txt @@ -0,0 +1,257 @@ +Flash Player小程序(内嵌网页):基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )开发,底层调用Adobe公司的ActiveX控件Flash.ocx(Windows 7及以下版本下载URL: http://get.adobe.com/flashplayer )实现播放。最低可用在Chrome 41、Firefox 52、Edge 80(Chromium内核)、360极速/安全、IE 8、Oprea 36、QQ、搜狗等浏览器,也兼容运行于这些浏览器的最新版本。 + +1、牛插(PluginOK)中间件的安装: +1)、如果是exe的安装程序,请直接运行安装; +2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装; +3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有WrlService.txt日志文件输出运行情况。 + +2、Flash Player内嵌网页小程序控制相关接口: +说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。 +HTTP网页在线测试:http://zorrosoft.com/flashfull.html HTTPS网页在线测试:https://zorrosoft.com/flashframe.html +前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码; +A、标记小程序的显示位置和大小 +.FlashApplet { + margin: 20px 0 0 20px; + width: 480px; + height: 320px; + border: 1px solid blue; + } +或者 +.FlashApplet { + width: 480px; + height: 320px; + top: 20px; + left: 20px; + border: 1px solid blue; + } +B、嵌入 +支持IFrame的: + +或者直接用 +
+ +另外需要嵌入用到的JS脚本,脚本程序是完全开源的。 + +播放窗口选中状态时单击即可全屏显示,全屏显示状态通过ESC按键取消,全屏切换会发送JSON包的VLC_FullScreen通知。 + +1)、请求启动VLC多媒体播放网页小程序: +Type为浏览器类型,传0自动判断(前提是当前浏览器已启动并显示在最前端,Flag指定当前页加载时必须是0) 可强制指定浏览器类型Type(1代表IE 2代表Chrome 4代表Firefox 8代表Opera 16代表Edge(Chromium内核) 32代表360极速浏览器 33代表360安全浏览器 34代表360企业安全浏览器 50代表QQ浏览器 60代表搜狗浏览器) +Title:网页标题中的关键词 +Flag掩码标记:1指定新标签加载(1和16都不指定时为当前页加载) 2小程序显示窗口边框 4不自动裁剪越界窗口 8自动适配网页高度和宽度显示 64根据标题避免重复加载相同的小程序 +IframeX和IframeY分别为iframe嵌套的横竖偏移修正坐标 +BarW和BarH分别是网页右侧和底部预留区域 +小程序实际显示首先会基于网页中指定的坐标和大小,再根据IframeX、IframeY、BarW、BarH设定的值做修正 +ShowType 播放窗口分屏类型,默认1只显示一个播放窗口,支持1-21 24 25等多达20种多窗口播放。 +Url:加载小程序所在的网页实际地址 +Open :启动后自动播放的流地址或本地多媒体文件路径,斜杠\替换成/再传 +注意:Open和Url如果有特殊字符或中文等,需要用URL编码处理后传递 +举例: +自动识别当前浏览器指定位置和大小启动: +{"req":"Wrl_VLCApplet","rid":4,"para":{"Type":"0","Title":"VLC Applet","Flag":3,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/VLCApplet.html","ShowType":1,"Open":"https://vjs.zencdn.net/v/oceans.mp4"}} + +自动识别当前浏览器自动适配网页大小启动: +{"req":"Wrl_VLCApplet","rid":4,"para":{"Type":"0","Title":"VLC Applet","Flag":11,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/VLCApplet.html","ShowType":1,"Open":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4"}} + +当前页指定位置自动适配网页加载测试 +http://zorrosoft.com/vlcframe.html + +启动后会前后收到两个JSON数据包 +A、{"ret":0,"rid":1,"data":{"ID":2}} +返回ID为当前小程序运行ID,通过此ID,可执行Wrl_AppletControl、Wrl_AppletScroll、Wrl_AppletResize等命令。 +B、{"event":"Wrl_Listen","aid":2,"data":{"SID":"123","PID":"90FC7E0E-0D2F-4C38-9875-B06407CE4556","Port":935}} +返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如重新指定播放一个视频。 + +2)、请求控制VLC多媒体播放网页小程序: +当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等 +ID为Wrl_VLCApplet启动小程序时返回的ID值,Code代表控制类型掩码:1关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,设置4和32隐藏后可通过8恢复显示 +{"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}} + +3)、请求滚动VLC多媒体播放网页小程序: +当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动 +ID为启动小程序时返回JSON中的ID值 +Code为滚动方向1是水平直,2是垂直,3是同时 +Left为横向滚动条位置,Top为纵向滚动条位置 +{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}} + +4)、请求改变VLC多媒体播放网页小程序显示位置或大小: +当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小 +ID为Wrl_VLCApplet启动小程序时返回的ID值,Width和Height分别为新的宽度和高度 +X和Y分别为新的显示位置,不指定时保持不变,指定时原设置的IframeX和IframeY失效 +{"req":"Wrl_AppletResize","rid":4,"para":{"ID":1,"Width":500,"Height":600}} +或,同时修改小程序显示起始坐标 +{"req":"Wrl_AppletResize","rid":5,"para":{"ID":1,"Width":500,"Height":600,"X":20,"Y":20}} + +5)、请求设置网页预留右侧宽度和底部高度,滚动条信息、垂直滚动及水平滚动位置: +当小程序显示区域超过当前网页时,需去除滚动条的显示影响 +ID为启动小程序时返回的ID值,BarW为预留右侧宽度 BarH为预留底部高度 +Code 1代表有水平滚动条,2代表有垂直滚动条,3代表都有 +ScrollTop垂直滚动条位置 ScrollTop水平滚动条位置 +{"req":"Wrl_ScrollBar","rid":6,"para":{"ID":"1","Code":2,"BarW":0,"BarH":0,"ScrollTop":0,"ScrollLeft":0}} + +6)、请求缩放VLC多媒体播放网页小程序,用于浏览器网页按比例缩放时响应,一般不需要处理: +ID为Wrl_VLCApplet启动小程序时返回的ID值,Scall为缩放百分比 +{"req":"Wrl_AppletScale","rid":7,"para":{"ID":1,"Scale":120}} + +3、小程序安装、升级、卸载 +1)、请求安装VLC多媒体播放网页小程序 +请在输入框中,输入如下请求,然后点击发送,完成安装: + +{"req":"Plugin_Install","rid":1,"para":{"Name":"VLC内嵌网页多媒体播放小程序","PID":"90FC7E0E-0D2F-4C38-9875-B06407CE4556","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的VLC内嵌网页多媒体播放小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360等最新版本浏览器网页中直接内嵌使用,可播放多路海康及大华等设备的实时视频","DownAddr":"http://local.zorrosoft.com/Files/Plugin/VlcWebPlayer.pid","MD5":"FE5965027F56648D00C91D3A2DD343B5","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"C76D767349ED09E3B55DEBF3B32088E397369DC262F213A7D9517E4ED53C566AF650015BCEC59534DAE057E843BB3E77AB61C3A1ACC047C870DAFE4753834ABDC68CC773728E4361CD3A2C6697AC3DC7CA28B202B8759F3438C8F373778C5712DAE08EFC4972849129952A539B439DA96255414242E9F6607BAA956961C0DE8AE59A60823B79CAB1EA1C8F6DC75ABAD3B50658EB211966D8B50296471B81DECEF5DF40F8CCF069464E298B051007980DEB31F30DB7D5D824B244F85B0A6234E504CF314D57F2A424153E7CD0150934EE2A42AB2B8EEB7A6BF74839BA18F495D3F875BEACC26E7D616BFCEAF4855930162A475FF98760D6E002540F9730A049AD"}} + +启动安装后,会不断收到安装进度直到安装结束。 + +2)、请求升级VLC多媒体播放网页小程序: + +{"req":"Plugin_Update","rid":1,"para":{"Name":"VLC内嵌网页多媒体播放小程序","PID":"90FC7E0E-0D2F-4C38-9875-B06407CE4556","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的VLC内嵌网页多媒体播放小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360等最新版本浏览器网页中直接内嵌使用,可播放多路海康及大华等设备的实时视频","DownAddr":"http://local.zorrosoft.com/Files/Plugin/VlcWebPlayer_Update.pid","MD5":"EB4F6C03B0EDC798D5FD1ACFB341140F","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"3040DB7D56EB0C4A044CF7A3D6DEFF3808AB6D3A4DBAB33CD7E781A76BEE58D2D259D069F6D3296C4CB2A6020416F505001C0AAFC8351720F55CC3921E8455C18528FE638B04DC2EA04E32274D42B3920A339E8C7B58BF001CEA3EA18B93CE543893EDD68FDDED6EA4B9A47BF1E82668A8F128BE7E67C3267C7E24B221EA9F662EFFF7E224A88F606DFA64D7FF541EC48FDE68C84503185717A2CCD9B9ED888D9D02B88F56AD46F7935651427B2CCA0D44DF7F4F1E367BE797087183D97C4DEBA0F9F563C50D328DCF832BD3398B7DDA53F9BCB4B112D0CD685BD1203C87020B85078F329E7D723E1623DA8C47C66966D2823724A8C1BADDA6A25758FE1AC860"}} + +以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。 + +3)、请求卸载VLC多媒体播放网页小程序: + +{"req":"Plugin_Remove","rid":3,"para":{"PID":"90FC7E0E-0D2F-4C38-9875-B06407CE4556","Type":8}} + +4、VLC多媒体播放网页小程序转调用ActiveX接口(接口说明:https://wiki.videolan.org/Documentation:WebPlugin ),先根据Wrl_VLCApplet请求启动后返回的端口号,针对此端口新建一个WebSocket连接后可执行如下指令: + +A、ActiveX接口功能请求: +支持创建多个VLC的ActiveX控件窗口同时播放多路实时视频,所以请求参数里需要指定窗口序号ID,从1开始,序号原则是从左向右开始编号,然后从上到下开始顺序编号,如遇右侧多层排列窗口时,直到右侧窗口序号排序完成 + +1) 取指定ID播放窗口属性AutoLoop(自动循环)值,举例: +请求:{"req":"VLC_GetAutoLoop","rid":41,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":41,"ID":1,"data":{"Ret":0,"AutoLoop":0}} 和 {"ret":0,"rid":41,"ID":2,"data":{"Ret":0,"AutoLoop":0}} +ret为请求返回值,0正常,非零不正常,不正常时请取和ret同级的错误描述err,下同 +Ret为调用ActiveX对应函数返回值,0代表正常 + +2) 设置指定ID控件窗口AutoLoop(自动循环)值,举例: +请求:{"req":"VLC_PutAutoLoop","rid":42,"para":[{"ID":1,"AutoLoop":1},{"ID":2,"AutoLoop":0}]} +分别返回:{"ret":0,"rid":42,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":42,"ID":2,"data":{"Ret":0}} + +3) 取指定ID控件窗口AutoPlay(自动播放)值,举例: +请求:{"req":"VLC_GetAutoPlay","rid":43,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":43,"ID":1,"data":{"Ret":0,"AutoPlay":0}} 和 {"ret":0,"rid":43,"ID":2,"data":{"Ret":0,"AutoPlay":0}} + +4) 设置指定ID窗口AutoPlay(自动播放)值,举例: +请求:{"req":"VLC_PutAutoPlay","rid":44,"para":[{"ID":1,"AutoPlay":1},{"ID":2,"AutoPlay":0}]} +分别返回:{"ret":0,"rid":44,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":44,"ID":2,"data":{"Ret":0}} + +5) 取指定ID窗口StartTime(开始时间)值,举例: +请求:{"req":"VLC_GetStartTime","rid":45,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":45,"ID":1,"data":{"Ret":0,"StartTime":0}} 和 {"ret":0,"rid":45,"ID":2,"data":{"Ret":0,"StartTime":0}} + +6) 设置指定ID窗口StartTime(开始时间)值,举例: +请求:{"req":"VLC_PutStartTime","rid":46,"para":[{"ID":1,"StartTime":0},{"ID":2,"StartTime":0}]} +分别返回:{"ret":0,"rid":46,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":46,"ID":2,"data":{"Ret":0}} + +7) 取指定ID窗口MRL(播放源)值,举例: +请求:{"req":"VLC_GetMRL","rid":47,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":47,"ID":1,"data":{"Ret":0,"MRL":""}} 和 {"ret":0,"rid":47,"ID":2,"data":{"Ret":0,"MRL":""}} + +8) 设置指定ID窗口MRL(播放源)值,举例: +请求:{"req":"VLC_PutMRL","rid":48,"para":[{"ID":1,"MRL":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream"},{"ID":2,"MRL":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream"}]} +分别返回:{"ret":0,"rid":48,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":48,"ID":2,"data":{"Ret":0}} + +9) 取指定ID窗口Visible(可见性),举例: +请求:{"req":"VLC_GetVisible","rid":49,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":49,"ID":1,"data":{"Ret":0,"Visible":1}} 和 {"ret":0,"rid":49,"ID":2,"data":{"Ret":0,"Visible":0}} + +10) 设置指定ID窗口Visible(可见性),举例: +请求:{"req":"VLC_PutVisible","rid":48,"para":[{"ID":1,"Visible":1},{"ID":2,"Visible":0}]} +分别返回:{"ret":0,"rid":50,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":50,"ID":2,"data":{"Ret":0}} + +11) 取指定ID窗口Volume(音量),举例: +请求:{"req":"VLC_GetVolume","rid":51,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":51,"ID":1,"data":{"Ret":0,"Volume":0}} 和 {"ret":0,"rid":51,"ID":2,"data":{"Ret":0,"Volume":0}} + +12) 设置指定ID窗口Volume(音量),举例: +请求:{"req":"VLC_PutVolume","rid":52,"para":[{"ID":1,"Volume":0},{"ID":2,"Volume":0}]} +分别返回:{"ret":0,"rid":52,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":52,"ID":2,"data":{"Ret":0}} + +13) 取指定ID窗口BackColor(背景色),举例: +请求:{"req":"VLC_GetBackColor","rid":53,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":53,"ID":1,"data":{"Ret":0,"BackColor":0}} 和 {"ret":0,"rid":53,"ID":2,"data":{"Ret":0,"BackColor":0}} + +14) 设置指定ID窗口BackColor(背景色),举例: +请求:{"req":"VLC_PutBackColor","rid":54,"para":[{"ID":1,"BackColor":0},{"ID":2,"BackColor":0}]} +分别返回:{"ret":0,"rid":54,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":54,"ID":2,"data":{"Ret":0}} + +15) 取指定ID窗口Toolbar(工具栏)显示与否,举例: +请求:{"req":"VLC_GetToolbar","rid":55,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":55,"ID":1,"data":{"Ret":0,"Toolbar":0}} 和 {"ret":0,"rid":55,"ID":2,"data":{"Ret":0,"Toolbar":0}} + +16) 设置指定ID窗口Toolbar(工具栏)显示与否,举例: +请求:{"req":"VLC_PutToolbar","rid":56,"para":[{"ID":1,"Toolbar":0},{"ID":2,"Toolbar":0}]} +分别返回:{"ret":0,"rid":56,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":56,"ID":2,"data":{"Ret":0}} + +17) 取指定ID窗口FullScreenEnabled(全屏启用),举例: +请求:{"req":"VLC_GetFullScreenEnabled","rid":57,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":57,"ID":1,"data":{"Ret":0,"FullScreenEnabled":0}} 和 {"ret":0,"rid":57,"ID":2,"data":{"Ret":0,"FullScreenEnabled":0}} + +18) 设置指定ID窗口FullScreenEnabled(全屏启用),举例: +请求:{"req":"VLC_PutFullScreenEnabled","rid":58,"para":[{"ID":1,"FullScreenEnabled":0},{"ID":2,"FullScreenEnabled":0}]} +分别返回:{"ret":0,"rid":58,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":58,"ID":2,"data":{"Ret":0}} + +19) 取指定ID窗口版本信息,举例: +请求:{"req":"VLC_GetVersionInfo","rid":59,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":59,"ID":1,"data":{"Ret":0,"VersionInfo":""}} 和 {"ret":0,"rid":59,"ID":2,"data":{"Ret":0,"VersionInfo":""}} + +20) 取指定ID窗口多媒体描述信息,举例: +请求:{"req":"VLC_MediaDescGet","rid":60,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":60,"ID":1,"data":{"Ret":0,"Title":"","Artist":"","Genre":"","Copyright":"","Album":"","TrackNumber":"","Desc":"","Rating":"","Date":"","Setting":"","Url":"","Language":"","NowPlaying":"","Publisher":"","EncodedBy":"","ArtworkURL":"","TrackID":""}} 和 {"ret":0,"rid":60,"ID":2,"data":{"Ret":0,"Title":"","Artist":"","Genre":"","Copyright":"","Album":"","TrackNumber":"","Desc":"","Rating":"","Date":"","Setting":"","Url":"","Language":"","NowPlaying":"","Publisher":"","EncodedBy":"","ArtworkURL":"","TrackID":""}} + +21) 取指定ID窗口音频信息,举例: +取时自动获得全部属性 +请求:{"req":"VLC_AudioGet","rid":61,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":61,"ID":1,"data":{"Ret":0,"Mute":0,"Volume":100,"Track":"","TrackNumber":"","Channel":"","Desc":""}} 和 {"ret":0,"rid":61,"ID":2,"data":{"Ret":0,"Mute":"","Volume":"","Track":"","TrackNumber":"","Channel":"","Desc":""}} + +22) 设置指定ID窗口音频信息,举例: +设置时不要求全部属性,只设置需要设置的 +请求:{"req":"VLC_AudioPut","rid":62,"para":[{"ID":1,"Mute":0,"Volume":100,"Track":"","TrackNumber":"","Channel":"","Desc":""},{"ID":2,"Mute":"","Volume":""}]} +分别返回:{"ret":0,"rid":62,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":62,"ID":2,"data":{"Ret":0}} + +23) 取指定ID窗口播放信息,举例: +取时自动获得全部属性 +请求:{"req":"VLC_GetPlay","rid":63,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":63,"ID":1,"data":{"Ret":0,"IsPlay":1,"ItemCount":3,"CurrentItem":1}} 和 {"ret":0,"rid":63,"ID":2,"data":{"Ret":0,"IsPlay":1,"ItemCount":5,"CurrentItem":2}} + +24) 指定ID窗口添加播放内容,举例: +Uri需要进行UrlEncode编码,Option可不设置用缺省值 +请求:{"req":"VLC_AddPlay","rid":64,"para":[{"ID":1,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"test","Option":":network-caching=300"},{"ID":2,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"test","Option":":rtsp-tcp"}]} +分别返回:{"ret":0,"rid":64,"ID":1,"data":{"Ret":0,"Item":1}} 和 {"ret":0,"rid":64,"ID":2,"data":{"Ret":0,"Item":2}} + +25) 指定ID窗口播放(指定多媒体),举例: +ItemId是序号,可缺省 +请求:{"req":"VLC_Play","rid":65,"para":[{"ID":1,"ItemId":1},{"ID":2}]} +分别返回:{"ret":0,"rid":65,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":65,"ID":2,"data":{"Ret":0}} + +26) 控制指定ID窗口播放器,举例: +Type可以是这些值:Pause,Play,Stop,StopAsync,Next,Prev,Clear,TogglePause +请求:{"req":"VLC_Control","rid":66,"para":[{"ID":1,"Type":"Pause"},{"ID":2,"Type":"Play"}]} +分别返回:{"ret":0,"rid":66,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":66,"ID":2,"data":{"Ret":0}} + +27) 指定ID窗口移除多媒体内容,举例: +ItemId是当前已存在的序号 +请求:{"req":"VLC_RemoveItem","rid":67,"para":[{"ID":1,"ItemId":1},{"ID":2,"ItemId":2}]} +分别返回:{"ret":0,"rid":67,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":67,"ID":2,"data":{"Ret":0}} + +28) 指定ID窗口解析选项,举例: +请求:{"req":"VLC_Parse","rid":68,"para":[{"ID":1,"Option":"","Timeout":0},{"ID":2,,"Option":"","Timeout":0}]} +分别返回:{"ret":0,"rid":68,"ID":1,"data":{"Ret":0,"Status":0}} 和 {"ret":0,"rid":68,"ID":2,"data":{"Ret":0,"Status":0}} + +29) 取指定ID窗口SubTitle信息,举例: +NameID指定时获取描述信息 +请求:{"req":"VLC_GetSubTitle","rid":69,"para":[{"ID":1,"NameID":0},{"ID":2}]} +分别返回:{"ret":0,"rid":69,"ID":1,"data":{"Ret":0,"Spu":1,"SpuNumber":0,"Desc":""}} 和 {"ret":0,"rid":69,"ID":2,"data":{"Ret":0,"Spu":1,"SpuNumber":0}} + +30) 设置指定ID窗口SubTitleSpu,举例: +请求:{"req":"VLC_PutSubTitle","rid":70,"para":[{"ID":1,"Spu":0},{"ID":2,"Spu":0}]} +分别返回:{"ret":0,"rid":70,"ID":1,"data":{"Ret":0}} 和 {"ret":0,"rid":70,"ID":2,"data":{"Ret":0}} + +31) 取指定ID窗口视频信息,举例: +TrackID指定时获取描述信息 +请求:{"req":"VLC_VideoGet","rid":71,"para":[{"ID":1,"TrackID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":71,"ID":1,"data":{"Ret":0,"FullScreent":0,"Width":0,"Height":0,"SubTitle":0,"Track":0,"TrackCount":0,"TeleText":0,"Scale":100,"AspectRatio":"","Crop":"","Desc":""}} 和 {"ret":0,"rid":71,"ID":2,"data":{"Ret":0,"Width":0,"Height":0,"SubTitle":0,"Track":0,"TrackCount":0,"TeleText":0,"Scale":100,"AspectRatio":"","Crop":""}} + +32) 设置指定ID窗口视频信息,举例: +需要的才设置 +请求:{"req":"VLC_VideoPut","rid":72,"para":[{"ID":1,"FullScreen":1,"Scale":100,"AspectRatio":0,"SubTitle":0,"TeleText":0,"Track":0},{"ID":2,"FullScreen":0}]} +分别返回:{"ret":0,"rid":72,"data":{"Ret":0}} 和 {"ret":0,"rid":72,"ID":2,"data":{"Ret":0}} + +33) 切换指定ID窗口视频全屏,举例: +请求:{"req":"VLC_VideoToggleFullscreen","rid":73,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":73,"data":{"Ret":0}} 和 {"ret":0,"rid":73,"ID":2,"data":{"Ret":0}} + +34) 切换指定ID窗口视频图文,举例: +请求:{"req":"VLC_VideoToggleTeletext","rid":74,"para":[{"ID":1},{"ID":2}]} +分别返回:{"ret":0,"rid":74,"data":{"Ret":0}} 和 {"ret":0,"rid":74,"ID":2,"data":{"Ret":0}} + +35) 取指定ID窗口字幕信息,举例: +Text指定时获取文字信息 Position指定时获取位置信息 +请求:{"req":"VLC_MarqueeGet","rid":75,"para":[{"ID":1,"Text":1,"Position":1},{"ID":2}]} +分别返回:{"ret":0,"rid":75,"ID":1,"data":{"Ret":0,"Color":0,"Opacity":0,"Refresh":0,"Size":0,"Timeout":0,"X":0,"Y":"","Text":"","Position":""}} 和 {"ret":0,"rid":75,"ID":2,"data":{"Ret":0,"Color":0,"Opacity":0,"Refresh":0,"Size":0,"Timeout":0,"X":0,"Y":""}} + +36) 设置指定ID窗口字幕信息,举例: +需要的才设置 +请求:{"req":"VLC_MarqueePut","rid":76,"para":[{"ID":1,"Text":"Hello","Position":"","Color":0,"Opacity":0,"Refresh":0,"Size":0,"X":0,"Y":0},{"ID":2,"Opacity":50}]} +分别返回:{"ret":0,"rid":76,"data":{"Ret":0}} 和 {"ret":0,"rid":76,"ID":2,"data":{"Ret":0}} + +37) 控制指定ID窗口字幕,举例: +请求:{"req":"VLC_MarqueeControl","rid":77,"para":[{"ID":1,"Enable":1},{"ID":2,"Enable":0}]} +分别返回:{"ret":0,"rid":77,"data":{"Ret":0}} 和 {"ret":0,"rid":77,"ID":2,"data":{"Ret":0}} + +38) 指定ID窗口帧速控制工具,举例: +Mode为空时禁用 +请求:{"req":"VLC_DeinterlaceControl","rid":78,"para":[{"ID":1,"Mode":"my_mode"},{"ID":2,"Mode":""}]} +分别返回:{"ret":0,"rid":78,"data":{"Ret":0}} 和 {"ret":0,"rid":78,"ID":2,"data":{"Ret":0}} + +39) 动态改变分屏数量或播放内容 +ShowType指定分屏数量,如果不变就不设置 +Play重新指定播放内容 +请求范例1:{"req":"VLC_ChangePlay","rid":79,"para":{"ShowType":2}} +请求范例2:{"req":"VLC_ChangePlay","rid":79,"para":{"Play":[{"ID":1,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"BrowserApplet1","Option":":rtsp-tcp"},{"ID":2,"Uri":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4","Name":"BrowserApplet2","Option":":file-caching=300"}]}} +请求范例3:{"req":"VLC_ChangePlay","rid":79,"para":{"ShowType":3,"Play":[{"ID":1,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"BrowserApplet1","Option":":network-caching=300"},{"ID":2,"Uri":"http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4","Name":"BrowserApplet2","Option":":file-caching=400"},{"ID":3,"Uri":"rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream","Name":"BrowserApplet3","Option":":rtsp-tcp"}]}} +分别返回:{"ret":0,"rid":80,"data":{"Ret":0,"Play":[]}} + +40) 设置当前焦点播放窗口 +ID是当前播放窗口序号,ID是从1开始,需要确保不越界 +{"req":"VLC_SetSelect","rid":80,"para":{"ID":2}} +返回:{"ret":0,"rid":80,"ID":2,"data":{"Ret":1}} + +41) 获取当前焦点播放窗口序号 +{"req":"VLC_GetSelect","rid":81,"para":{}} +返回:{"ret":0,"rid":81,"ID":2,"data":{"Ret":1}} +ID为当前播放焦点窗口 + +42) 指定ID窗口截图 +Type 指定图像类型,默认4(PNG) 可指定1(BMP)、3(JPG) +Count截取图数量,默认截取一张,Delay指定延迟毫秒数开始,Interval多张时间隔毫秒数 +多窗口播放情况下,只能指定某个窗口截图,不能同时指定多个窗口 +请求:{"req":"VLC_VideoSnapshot","rid":82,"para":[{"ID":1,"Type":4,"Count":3,"Delay":1000,"Interval":200}]} +分别返回:{"ret":0,"rid":82,"data":{"Ret":0,"Img":[{"Size":0,"Width":0,"Height":0,"File":""}]}} 和 {"ret":0,"rid":80,"ID":2,"data":{"Ret":0,,"Img":[{"Size":0,"Width":0,"Height":0,"File":""}]}} + +43) 设置RTSP流网络方式,HTTP还是TCP +{"req":"VLC_SetRtspTcp","rid":83,"para":{"Tcp":1}} +返回:{"ret":0,"rid":83,"data":{"Ret":1}} + +44) 获取RTSP流网络方式,HTTP还是TCP +{"req":"VLC_GetRtspTcp","rid":84,"para":{}} +返回:{"ret":0,"rid":84,"data":{"Tcp":1}} + +45) 请求退出当前连接的小程序 +{"req":"VLC_Exit","rid":85,"para":{}} + + +5、VLC多媒体播放网页小程序接收的通知: +这些通知必须使用Web Socket连接到此小程序实际侦听的端口才能接收到。 +A、ActiveX事件: + +1) Idle state +{"event":"VLC_MediaPlayerNothingSpeciale","ID":1,"data":{}} + +2) Opening media +{"event":"VLC_MediaPlayerOpening","ID":1,"data":{}} + +3) Buffering media +{"event":"VLC_MediaPlayerBuffering","ID":1,"data":{"cache":0}} + +4) Media is playing +{"event":"VLC_MediaPlayerPlaying","ID":1,"data":{}} + +5) Media is paused +{"event":"VLC_MediaPlayerPaused","ID":1,"data":{}} + +6) Forward playback +{"event":"VLC_MediaPlayerForward","ID":1,"data":{}} + +7) Backward playback +{"event":"VLC_MediaPlayerBackward","ID":1,"data":{}} + +8) An error has been encountered +{"event":"VLC_MediaPlayerEncounteredError","ID":1,"data":{}} + +9) End of playback reached +{"event":"VLC_MediaPlayerEndReached","ID":1,"data":{}} + +10) Playback stopped +{"event":"VLC_MediaPlayerStopped","ID":1,"data":{}} + +11) Playback stop async done +{"event":"VLC_MediaPlayerStopAsyncDone","ID":1,"data":{}} + +12) Seek changed +{"event":"VLC_MediaPlayerSeekableChanged","ID":1,"data":{"seekable":0}} + +13) Pause setting changed +{"event":"VLC_MediaPlayerPausableChanged","ID":1,"data":{"pausable":0}} + +14) Media changed +{"event":"VLC_MediaPlayerMediaChanged","ID":1,"data":{}} + +15) Title changed +{"event":"VLC_MediaPlayerTitleChanged","ID":1,"data":{"title":0}} + +16) Length changed +{"event":"VLC_MediaPlayerLengthChanged","ID":1,"data":{"length":0}} + +17) Chapter changed +{"event":"VLC_MediaPlayerChapterChanged","ID":1,"data":{"chapter":0}} + +18) Number of vout changed +{"event":"VLC_MediaPlayerVout","ID":1,"data":{"count":0}} + +19) Audio muted +{"event":"VLC_MediaPlayerMuted","ID":1,"data":{}} + +20) Audio unmuted +{"event":"VLC_MediaPlayerUnmuted","ID":1,"data":{}} + +21) Audio volume changed +{"event":"VLC_MediaPlayerAudioVolume","ID":1,"data":{"volume":0}} + +22) Selected 选中分屏窗口序号通知 +{"event":"VLC_Selected","ID":1,"data":{}} + +23) ToggleFullScreen 分屏窗口切换全屏通知 +{"event":"VLC_ToggleFullScreen","ID":1,"data":{}} + +23) KeyDown +{"event":"VLC_KeyDown","ID":1,"data":{"KeyCode":0,"Shift":0}} + +24) KeyPress +{"event":"VLC_KeyPress","ID":1,"data":{"KeyCode":0}} + +25) KeyUp +{"event":"VLC_KeyUp","ID":1,"data":{"KeyCode":0,"Shift":0}} + +B、PluginOK支持的事件通知: + +1) VLC_FullScreen 小程序是否响应了热键全屏 +{"event":"VLC_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记 + +2) Wrl_AppletExit 小程序退出通知 +{"event":"Wrl_AppletExit","data":{"ID":1}} + +6、其它 +请求参数的JSON数据包,请确保是UTF-8无签名的编码。 +更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.doc”及“PluginOK中间件安全解决方案”。 +如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938 \ No newline at end of file diff --git a/Bin/WPSOfficeApplet.txt b/Bin/WPSOfficeApplet.txt new file mode 100644 index 0000000000000000000000000000000000000000..386e47b3de81cbb24fb8955519fb4e15818cbbe4 --- /dev/null +++ b/Bin/WPSOfficeApplet.txt @@ -0,0 +1,145 @@ +金山WPS内嵌网页小程序:基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )开发,底层调用金山WPS的VBA接口实现可程序化驱动的网页在线编辑办公控件,可分别将WPS文字、WPS表格、WPS演示软件窗口内嵌到网页指定区域运行并操控。最低可用在Chrome 41、Firefox 52、Edge 80(Chromium内核)、360极速/安全、IE 8、Oprea 36、QQ、搜狗等浏览器,也兼容运行于这些浏览器的最新版本。 + +1、PluginOK(牛插)中间件的安装: +1)、如果是exe的安装程序,请直接运行安装; +2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装; +3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有WrlService.txt日志文件输出运行情况。 + +2、金山WPS内嵌网页小程序控制相关接口: +说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。 +HTTP网页在线测试:http://zorrosoft.com/wordfull.html HTTPS网页在线测试:https://zorrosoft.com/officeframe.html +前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码; +A、标记小程序的显示位置和大小 +.OfficeApplet { + margin: 20px 0 0 20px; + width: 480px; + height: 320px; + border: 1px solid blue; + } +或者 +.OfficeApplet { + width: 480px; + height: 320px; + top: 20px; + left: 20px; + border: 1px solid blue; + } +B、嵌入 +支持IFrame的: +