提交 83ccb432 编写于 作者: W wangzuohuai

单机绿色版程序包及官方发布的小程序版本

上级 8fe72980
点聚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的:
<iframe name="AIPSignApplet" id="AIPSignApplet" src="AIPSignApplet3.html" frameborder="0" align="left" width="550" height="540" scrolling="no">
或者直接用
<div id="AIPSignApplet" class="AIPSignApplet"</div>
另外需要嵌入用到的JS脚本,脚本程序是完全开源的。
1)、请求启动AIP电子签章内嵌网页小程序:
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设定的值做修正
Url:加载小程序所在的网页实际地址
Open:为需要签章的文件路径,磁盘目录斜杠用/
注意:Open和Url如果有特殊字符或中文等,需要用URL编码处理后传递
举例:
自动识别当前浏览器指定位置和大小启动:
{"req":"Wrl_AppletStart","rid":8,"para":{"Type":"0","Title":"AIPSign Applet","NodeName":"AIPSignApplet","PID":"62978E9A-9B00-4E42-9E70-0BE7526E14C0","Flag":3,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/AIPApplet.html","Open":"http://zorrosoft.com/Files/PluginOK.pdf"}}
指定页面内加载后适配网页切换显示:
http://zorrosoft.com/aipframe.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":"62978E9A-9B00-4E42-9E70-0BE7526E14C0","Port":1200}}
返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能。
2)、请求控制AIP电子签章内嵌网页小程序:
当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等
ID为Wrl_AIPSignApplet启动小程序时返回的ID值,Code代表控制类型掩码:1关闭 2全屏显示 4自动隐藏 8还原显示 16自动适配网页高度和宽度显示模式切换 32强制隐藏。其中全屏显示2,可直接通过热键ESC或取消,4和32隐藏后可通过8恢复显示
{"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}}
3)、请求滚动网页中AIP电子签章内嵌小程序:
当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动
ID为启动小程序时返回JSON中的ID值
Code为滚动方向1是水平直,2是垂直,3是同时
Left为横向滚动条位置,Top为纵向滚动条位置
{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}}
4)、请求改变网页中AIP电子签章内嵌网页小程序显示位置或大小:
当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小
ID为Wrl_AIPSignApplet启动小程序时返回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)、请求缩放网页中AIP电子签章内嵌网页小程序,用于浏览器网页按比例缩放时响应,一般不需要处理:
ID为Wrl_AIPSignApplet启动小程序时返回JSON中的ID值,Scall为缩放百分比
{"req":"Wrl_AppletScale","rid":7,"para":{"ID":1,"Scale":120}}
3、小程序安装、升级、卸载
1)、请求安装AIP电子签章内嵌网页小程序
请在输入框中,输入如下请求,然后点击发送,完成安装:
{"req":"Plugin_Install","rid":1,"para":{"Name":"AIP电子签章内嵌网页小程序","PID":"62978E9A-9B00-4E42-9E70-0BE7526E14C0","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的AIP电子签章内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌使用","DownAddr":"http://local.zorrosoft.com/Files/Plugin/AIPSignApplet.pid","MD5":"E9776C1B985FD12042F72A91C8B6A260","Version":"2.0.3.11","Size":557056,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"BA7B2EFC0542E033769FB1D8B7626D7754723779FA110E31EC77413D3D484E68B1ABDF143325F80D0D161E8D0FFC57F7E53668F8F5C7736EEC1D6F2A1EB12E0EC4F5C4148B051F542DCF6ECA8038FBB3F1E3340E92920344A46D54F44BAF41E09D8375CEF4EF278C1ED27C7C439486ABAF2BBA79176F198918E4DA378D76CCEAAE8822FC086CD8BD568AED5080E772C9A23833782CF8C8DC797327BB61A46DA303A059B96A7E7946E389EA465A9FCFFE35838BBF9AF6571F583CB83184EECCC2152B3C7E179E7853C2C5C0B2BEF648B6D97A1DA4AB113FBAC15287B5AD921908B105975E80450892EFF148F42520A1E3BE361B319E3E5C7CFE3C4F84F927BF4B"}}
启动安装后,会不断收到安装进度直到安装结束。
2)、请求升级点聚AIP电子签章内嵌网页小程序:
{"req":"Plugin_Update","rid":1,"para":{"Name":"AIP电子签章内嵌网页小程序","PID":"62978E9A-9B00-4E42-9E70-0BE7526E14C0","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的AIP电子签章内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌使用","DownAddr":"http://local.zorrosoft.com/Files/Plugin/AIPSignApplet_Update.pid","MD5":"644F2ED14DD21A3AC4F2D08FA96D57E0","Version":"2.0.3.11","Size":557056,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"21635E8644A58A60CACABA80484A7BDAF027189D404EE343C65D87FF880FD05CCC669F3F708ED794AD28082B7E56485DFF114074E0F9C8AFAC1E0AFB1907499CFE12BB67CB9499B0F53BD5C9726C5BC6EBC772020CDB54DE1751593C002C7925162FA258AF3F0545AEC2D3081E2C5F3D1FA5DC3943845D55B0ADF8B266E6B75B4A98536159CE2745846E526062B6BA6A95156765897AD5FF84B1F719AA22EFEAD55EA41BABBE0A9DEA703DBE8022785187F407F0B16375B93B210AAE3CF5C4B32A15AE2CC34A639C9B33372BA173027F66D3B623834CE4E28B6BBD382DFE7C3F9A49500B80EC032E4B75B0C40BFDFBF36A079BC353A71E606EC6B99ACBDC927A"}}
以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。
3)、请求卸载AIP电子签章内嵌网页小程序:
{"req":"Plugin_Remove","rid":3,"para":{"PID":"62978E9A-9B00-4E42-9E70-0BE7526E14C0","Type":8}}
4、AIP电子签章内嵌网页小程序转调用ActiveX接口(接口函数及方法说明详情请参考文档“AIP电子签名系统开发接口.chm”),先根据Wrl_AppletStart请求启动后返回侦听端口号,针对此端口新建一个WebSocket连接后可执行如下指令:
A、属性操作:
1) 返回附加信息
请求:{"req":"AIP_GetAppendTipInfo","rid":41,"para":{}}
返回:{"ret":0,"rid":41,"data":{"AppendTipInfo":"中国农业银行"}}
ret为请求返回值,0正常,非零不正常,不正常时请取和ret同级的错误描述err,下同
2) 设置附加信息
请求:{"req":"AIP_PutAppendTipInfo","rid":42,"para":{"AppendTipInfo":"中国农业银行"}}
返回:{"ret":0,"rid":42,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常或无返回值
3) 返回当前登录用户的操作状态(用户必须登录)
请求:{"req":"AIP_GetCurrAction","rid":43,"para":{}}
返回:{"ret":0,"rid":43,"data":{"CurrAction":"0"}}
4) 设置当前登录用户的操作状态
请求:{"req":"AIP_PutCurrAction","rid":44,"para":{"CurrAction":"0"}}
返回:{"ret":0,"rid":44,"data":{"Ret":"0"}}
5) 返回当前文档类型(必须以AIP_LoadOriginalFile装入文档)
请求:{"req":"AIP_GetCurrDocType","rid":45,"para":{}}
返回:{"ret":0,"rid":45,"data":{"CurrDocType":"0"}}
6) 设置当前文档类型
请求:{"req":"AIP_PutCurrDocType","rid":46,"para":{"CurrDocType":"0"}}
返回:{"ret":0,"rid":46,"data":{"Ret":"0"}}
7) 返回当前页索引(0,1,2,...)
请求:{"req":"AIP_GetCurrPage","rid":47,"para":{}}
返回:{"ret":0,"rid":47,"data":{"CurrPage":"0"}}
8) 设置当前页索引(0,1,2,...)
请求:{"req":"AIP_PutCurrPage","rid":48,"para":{"CurrPage":"0"}}
返回:{"ret":0,"rid":48,"data":{"Ret":"0"}}
9) 返回当前笔的颜色(RGB值) (用户必须登录)
请求:{"req":"AIP_GetCurrPenColor","rid":49,"para":{}}
返回:{"ret":0,"rid":49,"data":{"CurrPenColor":""}}
10) 设置当前笔的颜色
请求:{"req":"AIP_PutCurrPenColor","rid":50,"para":{"CurrPenColor":""}}
返回:{"ret":0,"rid":50,"data":{"Ret":"0"}}
11) 返回当前笔的宽度(用户必须登录)
请求:{"req":"AIP_GetCurrPenWidth","rid":51,"para":{}}
返回:{"ret":0,"rid":51,"data":{"CurrPenWidth":""}}
12) 设置当前笔的宽度
请求:{"req":"AIP_PutCurrPenWidth","rid":52,"para":{"CurrPenWidth":""}}
返回:{"ret":0,"rid":52,"data":{"Ret":"0"}}
13) 返回当前的证书序列号
请求:{"req":"AIP_GetCurrSerialNumber","rid":53,"para":{}}
返回:{"ret":0,"rid":53,"data":{"CurrSerialNumber":""}}
14) 设置当前的证书序列号
请求:{"req":"AIP_PutCurrSerialNumber","rid":54,"para":{"CurrSerialNumber":""}}
返回:{"ret":0,"rid":54,"data":{"Ret":"0"}}
15) 返回当前证书授予者名称
请求:{"req":"AIP_GetCurrSubjectName","rid":55,"para":{}}
返回:{"ret":0,"rid":55,"data":{"CurrSubjectName":""}}
16) 设置当前证书授予者名称
请求:{"req":"AIP_PutCurrSubjectName","rid":56,"para":{"CurrSubjectName":""}}
返回:{"ret":0,"rid":56,"data":{"Ret":"0"}}
17) 返回设置或返回当前编辑用户。这个名称会显示在附加用户信息的编辑框里
请求:{"req":"AIP_GetCurrTextEditUser","rid":57,"para":{}}
返回:{"ret":0,"rid":57,"data":{"CurrTextEditUser":""}}
18) 设置设置或返回当前编辑用户
请求:{"req":"AIP_PutCurrTextEditUser","rid":58,"para":{"CurrTextEditUser":""}}
返回:{"ret":0,"rid":58,"data":{"Ret":"0"}}
19) 返回页面位置单位类型值
请求:{"req":"AIP_GetCurrXYMode","rid":59,"para":{}}
返回:{"ret":0,"rid":59,"data":{"CurrXYMode ":""}}
20) 设置页面位置单位类型值
请求:{"req":"AIP_PutCurrXYMode","rid":60,"para":{"CurrXYMode":""}}
返回:{"ret":0,"rid":60,"data":{"Ret":"0"}}
22) 返回设计模式
请求:{"req":"AIP_GetInDesignMode","rid":62,"para":{}}
返回:{"ret":0,"rid":62,"data":{"InDesignMode":"0"}}
22) 设置设计模式
请求:{"req":"AIP_PutInDesignMode","rid":62,"para":{"InDesignMode":"0"}}
返回:{"ret":0,"rid":62,"data":{"Ret":"0"}}
23) 返回设计模式
请求:{"req":"AIP_GetPathName","rid":63,"para":{}}
返回:{"ret":0,"rid":63,"data":{"PathName":""}}
24) 设置设计模式
PathName需先进行UrlEncode编辑
请求:{"req":"AIP_PutPathName","rid":64,"para":{"PathName":""}}
返回:{"ret":0,"rid":64,"data":{"Ret":"0"}}
25) 返回当前压感灵敏度级别
请求:{"req":"AIP_GetPressurelevel","rid":65,"para":{}}
返回:{"ret":0,"rid":65,"data":{"Pressurelevel":""}}
26) 设置当前压感灵敏度级别
请求:{"req":"AIP_PutPressurelevel","rid":66,"para":{"Pressurelevel":""}}
返回:{"ret":0,"rid":66,"data":{"Ret":"0"}}
27) 返回控件菜单显示状态
请求:{"req":"AIP_GetShowDefMenu","rid":67,"para":{}}
返回:{"ret":0,"rid":67,"data":{"ShowDefMenu":""}}
28) 设置控件菜单显示状态
请求:{"req":"AIP_PutShowDefMenu","rid":68,"para":{"ShowDefMenu":""}}
返回:{"ret":0,"rid":68,"data":{"Ret":"0"}}
29) 返回全屏显示状态
请求:{"req":"AIP_GetShowFullScreen","rid":69,"para":{}}
返回:{"ret":0,"rid":69,"data":{"ShowFullScreen":"0"}}
30) 设置全屏显示状态
请求:{"req":"AIP_PutShowFullScreen","rid":70,"para":{"ShowFullScreen":"1"}}
返回:{"ret":0,"rid":670,"data":{"Ret":"0"}}
31) 返回滚动条状态
请求:{"req":"AIP_GetShowScrollBarButton","rid":71,"para":{}}
返回:{"ret":0,"rid":71,"data":{"ShowScrollBarButton":"0"}}
32) 设置滚动条状态
请求:{"req":"AIP_PutShowScrollBarButton","rid":72,"para":{"ShowScrollBarButton":"0"}}
返回:{"ret":0,"rid":72,"data":{"Ret":"0"}}
33) 返回当前word文件的修订显示状态。此属性只针对word
请求:{"req":"AIP_GetShowRevisions","rid":73,"para":{}}
返回:{"ret":0,"rid":73,"data":{"ShowRevisions":"0"}}
34) 设置当前word文件的修订显示状态
请求:{"req":"AIP_PutShowRevisions","rid":74,"para":{"ShowRevisions":"0"}}
返回:{"ret":0,"rid":74,"data":{"Ret":"0"}}
35) 返回工具栏显示状态
请求:{"req":"AIP_GetShowToolBar","rid":75,"para":{}}
返回:{"ret":0,"rid":75,"data":{"ShowToolBar":"0"}}
36) 设置工具栏显示状态
请求:{"req":"AIP_PutShowToolBar","rid":76,"para":{"ShowToolBar":"0"}}
返回:{"ret":0,"rid":76,"data":{"Ret":"0"}}
37) 返回文档视图
请求:{"req":"AIP_GetShowView","rid":77,"para":{}}
返回:{"ret":0,"rid":77,"data":{"SShowView":"0"}}
38) 设置文档视图
请求:{"req":"AIP_PutShowView","rid":78,"para":{"ShowView":"0"}}
返回:{"ret":0,"rid":78,"data":{"Ret":"0"}}
39) 返回当前文字平滑状态
请求:{"req":"AIP_GetTextSmooth","rid":79,"para":{}}
返回:{"ret":0,"rid":79,"data":{"TextSmooth":"0"}}
40) 设置当前文字平滑状态
请求:{"req":"AIP_PutTextSmooth","rid":80,"para":{"TextSmooth":"0"}}
返回:{"ret":0,"rid":80,"data":{"Ret":"0"}}
41) 返回水印透明度
请求:{"req":"AIP_GetWaterMarkAlpha","rid":81,"para":{}}
返回:{"ret":0,"rid":81,"data":{"WaterMarkAlpha":"0"}}
42) 设置水印透明度
请求:{"req":"AIP_PutWaterMarkAlpha","rid":82,"para":{"WaterMarkAlpha":"0"}}
返回:{"ret":0,"rid":82,"data":{"Ret":"0"}}
43) 返回水印旋转角度(X0.1度)
请求:{"req":"AIP_GetWaterMarkAngle","rid":83,"para":{}}
返回:{"ret":0,"rid":83,"data":{"WaterMarkAngle":""}}
44) 设置水印旋转角度
请求:{"req":"AIP_PutWaterMarkAngle","rid":84,"para":{"WaterMarkAngle":""}}
返回:{"ret":0,"rid":84,"data":{"Ret":"0"}}
45) 返回水印模式
请求:{"req":"AIP_GetWaterMarkMode","rid":85,"para":{}}
返回:{"ret":0,"rid":85,"data":{"WaterMarkMode":""}}
46) 设置水印模式
请求:{"req":"AIP_PutWaterMarkMode","rid":86,"para":{"WaterMarkMode":""}}
返回:{"ret":0,"rid":86"data":{"Ret":"0"}}
47) 返回输出的水印在文档的X坐标位置(坐标单位由CurrXYMode指定)。
请求:{"req":"AIP_GetWaterMarkPosX","rid":87,"para":{}}
返回:{"ret":0,"rid":87,"data":{"WaterMarkPosX":""}}
48) 设置输出的水印在文档的X坐标位置
请求:{"req":"AIP_PutWaterMarkPosX","rid":88,"para":{"WaterMarkPosX":""}}
返回:{"ret":0,"rid":88"data":{"Ret":"0"}}
49) 返回输出的水印在文档的Y坐标位置(坐标单位由CurrXYMode指定)。
请求:{"req":"AIP_GetWaterMarkPosY","rid":89,"para":{}}
返回:{"ret":0,"rid":89,"data":{"WaterMarkPosY":""}}
50) 设置输出的水印在文档的Y坐标位置
请求:{"req":"AIP_PutWaterMarkPosY","rid":90,"para":{"WaterMarkPosY":""}}
返回:{"ret":0,"rid":90"data":{"Ret":"0"}}
51) 返回输出的水印文字颜色
请求:{"req":"AIP_GetWaterMarkTextColor","rid":91,"para":{}}
返回:{"ret":0,"rid":91,"data":{"WaterMarkTextColor":""}}
52) 设置水印文字颜色设置
请求:{"req":"AIP_PutWaterMarkTextColor","rid":92,"para":{"WaterMarkTextColor":""}}
返回:{"ret":0,"rid":92"data":{"Ret":"0"}}
53) 返回水印的内容(文字或图片文件路径 )
请求:{"req":"AIP_GetWaterMarkTextOrPath","rid":93,"para":{}}
返回:{"ret":0,"rid":93,"data":{"WaterMarkTextOrPath":""}}
54) 设置水印的内容
WaterMarkTextOrPath需先进行UrlEncode编辑
请求:{"req":"AIP_PutWaterMarkTextOrPath","rid":94,"para":{"WaterMarkTextOrPath":""}}
返回:{"ret":0,"rid":94"data":{"Ret":"0"}}
55) 返回水印的缩放比例
请求:{"req":"AIP_GetWaterMarkTxtHOrImgZoom","rid":95,"para":{}}
返回:{"ret":0,"rid":95,"data":{"WaterMarkTxtHOrImgZoom":""}}
56) 设置水印的缩放比例
请求:{"req":"AIP_PutWaterMarkTxtHOrImgZoom","rid":96,"para":{"WaterMarkTxtHOrImgZoom":""}}
返回:{"ret":0,"rid":96"data":{"Ret":"0"}}
57) 返回PageCount
请求:{"req":"AIP_GetPageCount","rid":97,"para":{}}
返回:{"ret":0,"rid":97,"data":{"PageCount":""}}
58) 返回当前版本号
请求:{"req":"AIP_GetVersion","rid":98,"para":{}}
返回:{"ret":0,"rid":98,"data":{"Version":""}}
59) 批量获取属性
以上属性支持批量设置,获取水印相关属性举例如下:
{"req":"AIP_GetProp","rid":59,"para":{"Items":["WaterMarkMode","WaterMarkAlpha","WaterMarkTextOrPath","WaterMarkAddition","WaterMarkTxtHOrImgZoom","WaterMarkPosX","WaterMarkPosY","WaterMarkTextColor","WaterMarkAngle"]}}
获取指定名称的属性值,可批量获取,也可以获取单个。
返回内容格式如下:
{"ret":0,"rid":59,"data":{"WaterMarkMode":0,"WaterMarkAlpha":0,"WaterMarkTextOrPath":"","WaterMarkAddition":0,"WaterMarkTxtHOrImgZoom":0,"WaterMarkPosX":0,"WaterMarkPosY":0,"WaterMarkTextColor":0,"WaterMarkAngle":0}}
请求Items中的每个名称都对应自己名称的值
60) 批量设置属性
以上属性支持批量设置,设置水印相关属性举例如下:
{"req":"AIP_PutProp","rid":60,"para":{"WaterMarkMode":0,"WaterMarkAlpha":0,"WaterMarkTextOrPath":"","WaterMarkAddition":0,"WaterMarkTxtHOrImgZoom":0,"WaterMarkPosX":0,"WaterMarkPosY":0,"WaterMarkTextColor":0,"WaterMarkAngle":0}}
返回内容格式如下:
返回:{"ret":0,"rid":60"data":{"Ret":"0"}}
B、函数功能请求:
1) 显示关于对话框
请求:{"req":"AIP_AboutBox","rid":101,"para":{}}
返回:{"ret":0,"rid":101,"data":{}}
2) 添加骑缝章和普通印章接口(必须打开文件且用户已登录)
请求:{"req":"AIP_AddQiFengSeal","rid":102,"para":{"From":"","Pages":"","OriSealName":"","SealName":""}}
返回:{"ret":0,"rid":102,"data":{"Ret":"1"}}
Ret 1成功,0失败
3) 如当前是通过LoadOriginalFile打开的原始文件,通过此接口可以接受文件的全部修订
请求:{"req":"AIP_AcceptAllRevisions","rid":103,"para":{}}
返回:{"ret":0,"rid":103,"data":{"Ret":"1"}}
Ret >0 成功,<=0失败
4) 添加当前文件的属性和值
请求:{"req":"AIP_AddDocProperty","rid":104,"para":{"Name":"","Value":""}}
返回:{"ret":0,"rid":104,"data":{"Ret":"1"}}
Ret !=0 成功,=0失败
5) 在AIP_BeforeConvert后,默认打印机恢复为原打印机,并读取设置
请求:{"req":"AIP_AfterConvert","rid":105,"para":{}}
返回:{"ret":0,"rid":105,"data":{"Ret":"1"}}
Ret >0 成功,<=0失败
6) 将控件虚拟打印机设置为系统默认打印机,并保存原打印机设置。 在AIP_AfterConvert 后恢复
请求:{"req":"AIP_BeforeConvert","rid":106,"para":{}}
返回:{"ret":0,"rid":106,"data":{"Ret":"1"}}
Ret >0 成功,<=0失败
7) 将控件虚拟打印机设置为系统默认打印机,并保存原打印机设置。 在AIP_AfterConvert后恢复
请求:{"req":"AIP_BeforeConvertEx","rid":107,"para":{"PaperWidth":"","PaperHeight":""}}
返回:{"ret":0,"rid":107,"data":{"Ret":"1"}}
Ret >0 成功,<=0失败
8) 判断操作是否可以恢复
请求:{"req":"AIP_CanRedo","rid":108,"para":{}}
返回:{"ret":0,"rid":108,"data":{"Ret":"1"}}
Ret 1 可以恢复,0不可恢复
9) 判断操作是否可以撤销
请求:{"req":"AIP_CanUndo","rid":109,"para":{}}
返回:{"ret":0,"rid":109,"data":{"Ret":"1"}}
Ret 1 可以撤销,0不可撤销
10) 修改当前用户的登陆密码
请求:{"req":"AIP_ChangeCurrUserPwd","rid":110,"para":{"OldPwd":"","NewPwd":""}}
返回:{"ret":0,"rid":110,"data":{"Ret":"1"}}
Ret <>0 成功,0失败
11) 关闭当前文档
请求:{"req":"AIP_CloseDoc","rid":111,"para":{"ReqSaved":"0"}}
返回:{"ret":0,"rid":111,"data":{"Ret":"1"}}
Ret <>0 成功,0失败
12) 把当前通过AIP_LoadOriginalFile打开的原始文件直接转化成AIP文件
请求:{"req":"AIP_ConvertToAip","rid":112,"para":{"AddOri":"","Normal":""}}
返回:{"ret":0,"rid":112,"data":{"Ret":"1"}}
Ret <>0 成功,0失败
13) 将高度由原单位换算为新的单位
请求:{"req":"AIP_ConvertXYModeH","rid":113,"para":{"PageIndex":"","W":"","SXYMode":"","DXYMode":""}}
返回:{"ret":0,"rid":113,"data":{"Ret":""}}
Ret 成功:换算为新单位后的高度值
14) 将宽度由原单位换算为新的单位
请求:{"req":"AIP_ConvertXYModeW","rid":114,"para":{"PageIndex":"","W":"","SXYMode":"","DXYMode":""}}
返回:{"ret":0,"rid":114,"data":{"Ret":""}}
Ret 成功:换算为新单位后的宽度值
15) 拷贝本地文件
FromFile、ToFile需先进行UrlEncode编辑
请求:{"req":"AIP_CopyLocalFile","rid":115,"para":{"FromFile":"","ToFile":""}}
返回:{"ret":0,"rid":115,"data":{"Ret":"1"}}
Ret 1 成功,0失败
16) CopySelectText
请求:{"req":"AIP_CopySelectText","rid":116,"para":{}}
返回:{"ret":0,"rid":116,"data":{}}
17) 创建文件夹
Folder需先进行UrlEncode编辑
请求:{"req":"AIP_CreateFolder","rid":117,"para":{"Folder":""}}
返回:{"ret":0,"rid":117,"data":{"Ret":"1"}}
Ret 0 成功,<>0失败
18) 解密文件
InFile、OutFile需先进行UrlEncode编辑
请求:{"req":"AIP_DecFile","rid":110,"para":{"InFile":"","OutFile":"","Pwd":""}}
返回:{"ret":0,"rid":110,"data":{"Ret":"1"}}
Ret 0 成功,<>0失败
19) 删除文件属性
请求:{"req":"AIP_DelDocProperty","rid":119,"para":{"Name":""}}
返回:{"ret":0,"rid":119,"data":{"Ret":"1"}}
Ret <>0 成功,0失败
20) 删除文件夹
Folder需先进行UrlEncode编辑
请求:{"req":"AIP_DeleteFolder","rid":120,"para":{"Folder":""}}
返回:{"ret":0,"rid":120,"data":{"Ret":"1"}}
Ret 0 成功,<>0失败
21) 删除本地文件
FileName需先进行UrlEncode编辑
请求:{"req":"AIP_DeleteLocalFile","rid":121,"para":{"FileName":""}}
返回:{"ret":0,"rid":121,"data":{"Ret":"1"}}
Ret 0 成功,<>0失败
22) 删除指定节点
请求:{"req":"AIP_DeleteNote","rid":122,"para":{"NoteName":""}}
返回:{"ret":0,"rid":122,"data":{"Ret":"1"}}
Ret <>0 成功,0失败
23) 删除指定页面
请求:{"req":"AIP_DeletePage","rid":123,"para":{"Page":"0"}}
返回:{"ret":0,"rid":123,"data":{"Ret":"1"}}
Ret <>0 成功,0失败
24) 加密文件
InFile、OutFile、PwdFile需先进行UrlEncode编辑
请求:{"req":"AIP_EncFile","rid":124,"para":{"InFile":"","OutFile":"","PwdFile":""}}
返回:{"ret":0,"rid":124,"data":{"Ret":""}}
Ret "o-加密密码"成功,"x-错误信息" 失败
25) 执行shell命令
Exe、Paramer需先进行UrlEncode编辑
请求:{"req":"AIP_ExecuteCmd","rid":125,"para":{"Exe":"","Flag":"","Paramer":""}}
返回:{"ret":0,"rid":125,"data":{"Ret":"1"}}
Ret 0 成功,<>0失败
26) 导出文档中所有区域的字符串数据
OpenFileName、SaveFileName需先进行UrlEncode编辑
请求:{"req":"AIP_ExportEditNodeValue","rid":126,"para":{"OpenFileName":"","SaveFileName":"","WithHeader":""}}
返回:{"ret":0,"rid":126,"data":{"Ret":"1"}}
Ret 0 成功,<>0失败
27) FindText
请求:{"req":"AIP_FindText","rid":127,"para":{"Text":"","Case ":"","PageS":"","PosXS":"","PosYS":"","PageE":"","PosXE":"","PosYE":"","SearchIndex":""}}
返回:{"ret":0,"rid":127,"data":{"Ret":""}}
Ret 成功:S页索引,页坐标X,页坐标Y 成功,失败:空
28) 连接FTP服务器
URL需先进行UrlEncode编辑
请求:{"req":"AIP_FtpConnect","rid":128,"para":{"URL":"","Port":"","User":"","Pwd":""}}
返回:{"ret":0,"rid":128,"data":{"Ret":"1"}}
Ret <>0 成功,0失败
29) 断开FTP服务器连接
请求:{"req":"AIP_FtpDisConnect","rid":129,"para":{}}
返回:{"ret":0,"rid":129,"data":{"Ret":"1"}}
Ret <>0 成功,0失败
30) 通过FTP下载服务器文件
RemoteFile、LocalFile需先进行UrlEncode编辑
请求:{"req":"AIP_FtpGetFile","rid":130,"para":{"RemoteFile":"","LocalFile":""}}
返回:{"ret":0,"rid":130,"data":{"Ret":"1"}}
Ret <>0 成功,0失败
31) 通过FTP上传本地文件
RemoteFile、LocalFile需先进行UrlEncode编辑
请求:{"req":"AIP_FtpPutFile","rid":131,"para":{"RemoteFile":"","LocalFile":"","OverWrite":""}}
返回:{"ret":0,"rid":131,"data":{"Ret":"1"}}
Ret <>0 成功,0失败
32) 获取word文档中的bookmark的位置
请求:{"req":"AIP_GetBMPos","rid":132,"para":{"BMName":"","PosType":""}}
返回:{"ret":0,"rid":132,"data":{"Ret":"1"}}
Ret >=0 成功,<0失败
33) 获取当前文件的Base64编码的字符串,与"AIP_LoadFileBase64对应
请求:{"req":"AIP_GetCurrFileBase64","rid":133,"para":{}}
返回:{"ret":0,"rid":133,"data":{"Ret":""}}
Ret 成功:Base64编码的字符串,失败:空
34) 取得当前文件大小,单位字节
请求:{"req":"AIP_GetCurrFileSize","rid":134,"para":{}}
返回:{"ret":0,"rid":134,"data":{"Ret":""}}
Ret >0 成功,0失败
35) 获得文档窗口的指定位置在页面上的坐标
请求:{"req":"AIP_GetCurrPagePos","rid":135,"para":{"PagePosType":""}}
返回:{"ret":0,"rid":135,"data":{"Ret":""}}
Ret 成功:页索引,页面坐标x,页面坐标Y 失败:空
36) 获得当前服务序列号对应的服务名。每一服务器用户分配32位唯一表示符号
请求:{"req":"AIP_GetCurrServer","rid":136,"para":{"ServerID":"1"}}
返回:{"ret":0,"rid":136,"data":{"Ret":"","ServerID":"1"}}
Ret 成功:当前服务器的详细名称,失败:空
37) 获取当前用户的权限(请参阅方法Login)
请求:{"req":"AIP_GetCurrUserAccess","rid":137,"para":{}}
返回:{"ret":0,"rid":137,"data":{"Ret":"1"}}
Ret <>0 当前用户的权限 成功,0失败
38) 返回当前登录用户的用户名
请求:{"req":"AIP_GetCurrUserID","rid":138,"para":{}}
返回:{"ret":0,"rid":138,"data":{"Ret":""}}
Ret 成功:当前登录用户的用户名,0失败
39) 获取用户界面颜色
请求:{"req":"AIP_GetCustomColour","rid":139,"para":{"Type":"1"}}
返回:{"ret":0,"rid":139,"data":{"Ret":""}}
Ret 成功:颜色的RGB值
40) 返回当前打开的文件中的所有文字
请求:{"req":"AIP_GetDocText","rid":140,"para":{}}
返回:{"ret":0,"rid":140,"data":{"Ret":"1"}}
Ret 成功:返回当前打开的文件中的所有文字 失败:空
41) 根据错误ID来返回错误的信息
请求:{"req":"AIP_GetErrorString","rid":141,"para":{"ErrorNo":"1"}}
返回:{"ret":0,"rid":141,"data":{"Ret":"1"}}
Ret 成功:错误的信息 失败:空
42) 获取文件的base64串
FilePath需先进行UrlEncode编辑
请求:{"req":"AIP_GetFileBase64","rid":142,"para":{"FilePath":""}}
返回:{"ret":0,"rid":142,"data":{"Ret":""}}
Ret 成功:base64串 失败:空
43) 返回文件的修改/创建日期
FilePath需先进行UrlEncode编辑
请求:{"req":"AIP_GetFileInfo","rid":143,"para":{"FilePath":"","Type":""}}
返回:{"ret":0,"rid":143,"data":{"Ret":""}}
Ret 成功:字符串 失败:空
44) 获得指定目录下的所有文件列表
FilePath需先进行UrlEncode编辑
请求:{"req":"AIP_GetFileListUnderDir","rid":144,"para":{"FilePath":""}}
返回:{"ret":0,"rid":144,"data":{"Ret":""}}
Ret 成功:以;分割的文件列表 失败:空
45) 获得指定目录下的所有文件列表
FilePath需先进行UrlEncode编辑
请求:{"req":"AIP_GetFileSize","rid":145,"para":{"FilePath":""}}
返回:{"ret":0,"rid":145,"data":{"Ret":""}}
Ret 成功:以;分割的文件列表 失败:空
46) 获得上传的二进制流数据
请求:{"req":"AIP_GetHttpPostData","rid":146,"para":{"ParaS":"","ParaN":""}}
返回:{"ret":0,"rid":146,"data":{"Ret":""}}
Ret 成功:二进制流数据BASE64编码 失败:空
47) 获得打印机的任务详细信息
请求:{"req":"AIP_GetJobInfoByStr","rid":147,"para":{"PrintName":"","JobID":""}}
返回:{"ret":0,"rid":147,"data":{"Ret":""}}
Ret 成功:打印机的任务详细信息,失败:空
48) 获取当前属性的下一个属性
请求:{"req":"AIP_GetNextDocProperty","rid":148,"para":{"PrevName":""}}
返回:{"ret":0,"rid":148,"data":{"Ret":""}}
Ret 成功:属性名称,失败:空
49) 获取下一个节点信息
请求:{"req":"AIP_GetNextNote","rid":149,"para":{"UserID":"","ServerID":"","NoteID":""}}
返回:{"ret":0,"rid":149,"data":{"Ret":""}}
Ret 成功:下一个节点信息,失败:空
50) 获取用户 UserID 的下一个用户ID
请求:{"req":"AIP_GetNextUser","rid":150,"para":{"UserID":"","ServerID":""}}
返回:{"ret":0,"rid":150,"data":{"Ret":""}}
Ret 成功:下一个用户ID 失败:空
51) 获取指定节点的逻辑高度(单位基于当前坐标系)
请求:{"req":"AIP_GetNoteHeight","rid":151,"para":{"Name":""}}
返回:{"ret":0,"rid":151,"data":{"Ret":""}}
Ret 成功:获取指定节点的逻辑高度(单位基于当前坐标系),失败:0
52) 获取节点个数
请求:{"req":"AIP_GetNoteNum","rid":152,"para":{"NoteType":""}}
返回:{"ret":0,"rid":152,"data":{"Ret":""}}
Ret 成功:节点个数
53) 获取指定节点的X逻辑坐标位置(坐标单位由CurrXYMode指定)
请求:{"req":"AIP_GetNotePosX","rid":153,"para":{"Name":""}}
返回:{"ret":0,"rid":153,"data":{"Ret":""}}
Ret 成功:指定节点的X逻辑坐标
54) 获取指定节点的Y逻辑坐标位置(坐标单位由CurrXYMode指定)
请求:{"req":"AIP_GetNotePosY","rid":154,"para":{"Name":""}}
返回:{"ret":0,"rid":154,"data":{"Ret":""}}
Ret 成功:指定节点的Y逻辑坐标
55) 根据序号获得节点
请求:{"req":"AIP_GetNoteByIndex","rid":155,"para":{"Index":"","NoteType":""}}
返回:{"ret":0,"rid":155,"data":{"Ret":""}}
Ret 成功:节点名称 失败:空
56) 获取指定节点的逻辑宽度(单位基于当前坐标系)
请求:{"req":"AIP_GetNoteWidth","rid":156,"para":{"Name":""}}
返回:{"ret":0,"rid":156,"data":{"Ret":""}}
Ret 成功:指定节点的逻辑宽度
57) 获取原始文件
FileName需先进行UrlEncode编辑
请求:{"req":"AIP_GetOriginalFile","rid":157,"para":{"FileName":"","OriginalIndex":""}}
返回:{"ret":0,"rid":157,"data":{"Ret":""}}
Ret <>0 成功,0失败
58) 获取原始文件个数
请求:{"req":"AIP_GetOriginalFileCount","rid":158,"para":{}}
返回:{"ret":0,"rid":158,"data":{"Ret":""}}
Ret 成功:原始文件的个数
59) 获取原始文件名
请求:{"req":"AIP_GetOriginalFileName","rid":159,"para":{"OriginalIndex":""}}
返回:{"ret":0,"rid":159,"data":{"Ret":""}}
Ret 成功:原始文件名
60) 获取原始文档类型
请求:{"req":"AIP_GetOriginalFileType","rid":160,"para":{"OriginalIndex":""}}
返回:{"ret":0,"rid":160,"data":{"Ret":""}}
Ret 成功:原始文档类型
61) 获取指定页面的高度(像素)
请求:{"req":"AIP_GetPageHeight","rid":161,"para":{"PageIndex":""}}
返回:{"ret":0,"rid":161,"data":{"Ret":""}}
Ret 成功:指定页面的高度
62) 获取页面显示模式信息
请求:{"req":"AIP_GetPageMode","rid":162,"para":{"ZoomPercent":""}}
返回:{"ret":0,"rid":162,"data":{"Ret":""}}
Ret 成功:>0
63) 获取指定页面的宽度(像素)
请求:{"req":"AIP_GetPageWidth","rid":163,"para":{"PageIndex":""}}
返回:{"ret":0,"rid":163,"data":{"Ret":""}}
Ret 成功:指定页面的宽度
64) 获得所有打印机
请求:{"req":"AIP_GetPrinterList","rid":164,"para":{}}
返回:{"ret":0,"rid":164,"data":{"Ret":""}}
Ret 成功:格式为<+打印机名/;打印机状态码/;任务数/;-> 失败:空
65) 获得打印机的任务列表和状态
请求:{"req":"AIP_GetPrinterStatusByStr","rid":165,"para":{"PrintName":""}}
返回:{"ret":0,"rid":165,"data":{"Ret":""}}
Ret 成功:非空 失败:空
66) 获取指定节点或页面的旋转类型
请求:{"req":"AIP_GetRotateType","rid":166,"para":{"Name":""}}
返回:{"ret":0,"rid":166,"data":{"Ret":""}}
Ret 成功:>=0 失败:<0
67) 获取当前智能卡的证书序列
请求:{"req":"AIP_GetSerialNumber","rid":167,"para":{}}
返回:{"ret":0,"rid":167,"data":{"Ret":""}}
Ret 成功:智能卡的证书序列
68) 获得sheet数量(excel)
请求:{"req":"AIP_GetSheetCount","rid":168,"para":{}}
返回:{"ret":0,"rid":168,"data":{"Ret":""}}
Ret >=0 成功,<0 失败
69) 根据Sheet名称获得sheet序号
请求:{"req":"AIP_GetSheetIndex","rid":169,"para":{"SheetName":""}}
返回:{"ret":0,"rid":169,"data":{"Ret":""}}
Ret >=0 成功,<0 失败
70) 获得sheet名称(excel)
请求:{"req":"AIP_GetSheetName","rid":170,"para":{"SheetIndex":""}}
返回:{"ret":0,"rid":170,"data":{"Ret":""}}
Ret 成功:sheet名称 失败:空
71) 获得指定范围的公式(excel)
请求:{"req":"AIP_GetSheetRangeFormula","rid":171,"para":{"SheetIndex":"","RngName":""}}
返回:{"ret":0,"rid":171,"data":{"Ret":""}}
Ret 成功:指定范围的公式 失败:空
72) 获得指定范围的文字(excel)
请求:{"req":"AIP_GetSheetRangeText","rid":172,"para":{"SheetIndex":"","RngName":""}}
返回:{"ret":0,"rid":172,"data":{"Ret":""}}
Ret 成功:指定范围的文字 失败:空
73) 获得指定范围的值(excel)
请求:{"req":"AIP_GetSheetRangeValue","rid":173,"para":{"SheetIndex":"","RngName":""}}
返回:{"ret":0,"rid":173,"data":{"Ret":""}}
Ret 成功:指定范围的值 失败:空
74) 随机生成一个唯一的临时文件名
请求:{"req":"AIP_GetTempFileName","rid":174,"para":{"FileType":""}}
返回:{"ret":0,"rid":174,"data":{"Ret":""}}
Ret 成功:临时文件名 失败:空
75) 获取用户 pcUserID 的用户的相关信息
请求:{"req":"AIP_GetUserInfo","rid":175,"para":{"UserID":"","ServerID":""}}
返回:{"ret":0,"rid":175,"data":{"Ret":"","UserType":"","UserLastTime":"","PenColor":"","PenWidth":""}}
Ret 成功:1 失败:0 UserType用户类型 UserLastTime最后登录时间 PenColor笔的颜色 PenWidth笔的宽度
76) 获取指定类型的用户信息
请求:{"req":"AIP_GetUserInfoEx","rid":176,"para":{"UserID":"","ServerID":"","Type":""}}
返回:{"ret":0,"rid":176,"data":{"Ret":""}}
Ret 成功:指定类型的用户信息
77) 获取当前登录用户的远程地址。仅当用户是远程登录时有效
请求:{"req":"AIP_GetUserRemoteAddr","rid":177,"para":{}}
返回:{"ret":0,"rid":177,"data":{"Ret":""}}
Ret 成功:登录用户的远程地址 失败:空
78) 获取参数对应的值
请求:{"req":"AIP_GetValue","rid":178,"para":{"Name":""}}
返回:{"ret":0,"rid":178,"data":{"Ret":""}}
Ret 成功:参数对应的值
79) 获取参数对应的内容
请求:{"req":"AIP_GetValueEx","rid":179,"para":{"Name":"","ValueType":"","ValueName":"","ParaN":"","ParaS":""}}
返回:{"ret":0,"rid":179,"data":{"Ret":""}}
Ret 成功:1 失败:<=0
80) 跳转到下一页
请求:{"req":"AIP_GotoNext","rid":180,"para":{}}
返回:{"ret":0,"rid":180,"data":{}}
81) 定位到参数指定的位置
请求:{"req":"AIP_GotoPosition","rid":181,"para":{"Type":"","Name":"","PageIndex":"","PosX":"""Posy":""}}
返回:{"ret":0,"rid":181,"data":{"Ret":""}}
Ret 成功:1 失败:<>1
82) 跳转到上一页
请求:{"req":"AIP_GotoPrev","rid":182,"para":{}}
返回:{"ret":0,"rid":182,"data":{}}
83) 使AIP文档中指定类型变成灰色
请求:{"req":"AIP_GrayData","rid":183,"para":{"GrayType":""}}
返回:{"ret":0,"rid":183,"data":{"Ret":""}}
Ret 成功:<>0 失败:=0
84) 隐藏指定工具条按钮
请求:{"req":"AIP_HideBarItems","rid":184,"para":{"Menu1":"","Menu2":"","ToolBar1":"","ToolBar2":"","ExtBar1":"","ExtBar2":""}}
返回:{"ret":0,"rid":184,"data":{"Ret":""}}
Ret 成功:<>0 失败:=0
85) 隐藏指定菜单
请求:{"req":"AIP_HideMenuItem","rid":185,"para":{"MenuState":""}}
返回:{"ret":0,"rid":185,"data":{"Ret":""}}
Ret 成功:<>0 失败:=0
86) 设置通过Http上传的数据流
RelateFile需先进行UrlEncode编辑
请求:{"req":"AIP_HttpAddPostBuffer","rid":186,"para":{"Name":"","RelateFile":"","Buffer":"","Len":""}}
返回:{"ret":0,"rid":186,"data":{"Ret":""}}
Ret 成功:<>0 失败:=0
87) 设置Http上传当前打开的AIP文件
请求:{"req":"AIP_HttpAddPostCurrFile","rid":187,"para":{"Name":""}}
返回:{"ret":0,"rid":187,"data":{"Ret":""}}
Ret 成功:<>0 失败:=0
88) 加入当前文件到待上传列表
FileName需先进行UrlEncode编辑
请求:{"req":"AIP_HttpAddPostCurrFileEx","rid":188,"para":{"Name":"","FileName":""}}
返回:{"ret":0,"rid":188,"data":{"Ret":""}}
Ret 成功:1 失败:=0
89) 设置通过Http上传的文件
File需先进行UrlEncode编辑
请求:{"req":"AIP_HttpAddPostFile","rid":189,"para":{"Name":"","File":""}}
返回:{"ret":0,"rid":189,"data":{"Ret":""}}
Ret 成功:<>0 失败:=0
90) 设置通过Http上传的字符串变量
请求:{"req":"AIP_HttpAddPostString","rid":190,"para":{"Name":"","Value":""}}
返回:{"ret":0,"rid":190,"data":{"Ret":""}}
Ret 成功:<>0 失败:=0
91) 设置通过Http上传的数字变量
请求:{"req":"AIP_HttpAddPostValue","rid":191,"para":{"Name":"","Value":""}}
返回:{"ret":0,"rid":191,"data":{"Ret":""}}
Ret 成功:<>0 失败:=0
92) 初始化Http , 在调用Http的时候必须首先初始化
请求:{"req":"AIP_HttpInit","rid":192,"para":{}}
返回:{"ret":0,"rid":192,"data":{"Ret":""}}
Ret 成功:<>0 失败:=0
93) 触发Http上传Post操作
HttpURL需先进行UrlEncode编辑
请求:{"req":"AIP_HttpPost","rid":193,"para":{"HttpURL":""}}
返回:{"ret":0,"rid":193,"data":{"Ret":""}}
Ret 成功:HTTP的返回信息 失败:空
94) 执行菜单快捷键操作
请求:{"req":"AIP_InputHotKey","rid":194,"para":{"Type":""}}
返回:{"ret":0,"rid":194,"data":{"Ret":""}}
Ret 成功:1 失败:0
95) 设置各部门打印份数。可重复调用,本接口只有网络版有效
请求:{"req":"AIP_InsertDepartmentCopy","rid":195,"para":{"DepName":"","Copys":""}}
返回:{"ret":0,"rid":195,"data":{"Ret":""}}
Ret 成功:<>0 失败:0
96) 插入附件
FilePath需先进行UrlEncode编辑
请求:{"req":"AIP_InsertEmbFile","rid":196,"para":{"FilePath":"","FileData":"","EmbName":"","Page":"","Left":"","Top":""}}
返回:{"ret":0,"rid":196,"data":{"Ret":""}}
Ret 成功:插入的节点名称 失败:空
97) 创建空白页面,批示页,编辑页。(必须用户登录)
请求:{"req":"AIP_InsertEmptyPage","rid":197,"para":{"PageIndex":"","Type":"","Width":"","Height":""}}
返回:{"ret":0,"rid":197,"data":{"Ret":""}}
Ret 成功:<>0 失败:0
98) 动态添加编辑域|手写域|超链接.(必须登录)
请求:{"req":"AIP_InsertNote","rid":198,"para":{"Name":"","PageIndex":"","Type":"","PosX":"","PosY":"","Width":"","Height":""}}
返回:{"ret":0,"rid":198,"data":{"Ret":""}}
Ret 成功:节点名字符串 失败:空
99) 插入节点
请求:{"req":"AIP_InsertNote2","rid":199,"para":{"Name":"","NoteType":"","Value":"","StartPage":"","EndPage":"","TagType":"","TagName":"","Offset":"","Zoom":""}}
返回:{"ret":0,"rid":199,"data":{"Ret":""}}
Ret 成功:节点名称 失败:空
100) 插入节点
请求:{"req":"AIP_InsertNoteEx","rid":200,"para":{"Name":"","NoteType":"","TagType":"","TagName":"","Level":""}}
返回:{"ret":0,"rid":200,"data":{"Ret":""}}
Ret 成功:节点的名字 失败:空
101) 插入图片(用户必须登录)
请求:{"req":"AIP_InsertPicture","rid":201,"para":{"PicName":"","PicValue":"","Page":"","Left":"","Top":"","Zoom":""}}
返回:{"ret":0,"rid":201,"data":{"Ret":""}}
Ret 成功:节点的名字 失败:空
102) 判断打印机状态
请求:{"req":"AIP_IsConverting","rid":202,"para":{}}
返回:{"ret":0,"rid":2023,"data":{"Ret":""}}
Ret 成功:1正在打印 0未在打印 -1打印出错
103) 判定是否为空白文档
请求:{"req":"AIP_IsEmptyDoc","rid":203,"para":{}}
返回:{"ret":0,"rid":203,"data":{"Ret":""}}
Ret 成功:1空白文档 <>1非空白文档
104) 判断文件夹是否存在
Folder需先进行UrlEncode编辑
请求:{"req":"AIP_IsFolderExist","rid":204,"para":{"Folder":""}}
返回:{"ret":0,"rid":204,"data":{"Ret":""}}
Ret 成功:1存在 <>1不存在
105) 判断当前是否登录
请求:{"req":"AIP_IsLogin","rid":205,"para":{}}
返回:{"ret":0,"rid":205,"data":{"Ret":""}}
Ret 成功:<>0 0无用户登录
106) 判断当前是否打开文件
请求:{"req":"AIP_IsOpened","rid":206,"para":{}}
返回:{"ret":0,"rid":206,"data":{"Ret":""}}
Ret 成功:<>0 0当前没有打开文件
107) 查看文件、用户、节点进行保护限制的状态
请求:{"req":"AIP_IsProtect","rid":207,"para":{"Name":"","Source":"","Type":""}}
返回:{"ret":0,"rid":207,"data":{"Ret":""}}
Ret 成功:1受到保护 0未保护 -1发生错误
108) 文件是否被修改(从上一次保存到现在)
请求:{"req":"AIP_IsSaved","rid":208,"para":{}}
返回:{"ret":0,"rid":208,"data":{"Ret":""}}
Ret 成功:<>0文档没修改 0文档被修改
109) 获取是否存在登录用户
请求:{"req":"AIP_IsUserExist","rid":209,"para":{"UserID":"","ServerID":""}}
返回:{"ret":0,"rid":209,"data":{"Ret":""}}
Ret 成功:<>0存在此登录用户 0不存在匹配的登录用户信息
110) 打开文件
FileName需先进行UrlEncode编辑
请求:{"req":"AIP_LoadFile","rid":210,"para":{"FileName":""}}
返回:{"ret":0,"rid":210,"data":{"Ret":""}}
Ret 成功:1 失败:0
111) 加载Base64编码的字符串
请求:{"req":"AIP_LoadFileBase64","rid":211,"para":{"Base64String":""}}
返回:{"ret":0,"rid":211,"data":{"Ret":""}}
Ret 成功:<>0 失败:0
112) 打开AIP文件, 如果打开的不是 AIP 文件, 将进行自动转化
FileNameOrUrl需先进行UrlEncode编辑
请求:{"req":"AIP_LoadFileEx","rid":212,"para":{"FileNameOrUrl":"","AddOri":"","Normal":"","Type":""}}
返回:{"ret":0,"rid":212,"data":{"Ret":""}}
Ret 成功:1 失败:0
113) 异步打开文件
FileNameOrUrl需先进行UrlEncode编辑
请求:{"req":"AIP_LoadFileExAsync","rid":213,"para":{"FileNameOrUrl":"","AddOri":"","Normal":"","Type":""}}
返回:{"ret":0,"rid":213,"data":{"Ret":""}}
Ret 成功:1
114) 以原始文件打开方式打开或创建文件,不转化为aip文件
FileNameOrUrl需先进行UrlEncode编辑
请求:{"req":"AIP_LoadOriginalFile","rid":214,"para":{"FileNameOrUrl":"","Type":""}}
返回:{"ret":0,"rid":214,"data":{"Ret":""}}
Ret 成功:1 失败:0
115) 异步打开原始文件
FileNameOrUrl需先进行UrlEncode编辑
请求:{"req":"AIP_LoadOriginalFileAsync","rid":215"para":{"FileNameOrUrl":"","Type":""}}
返回:{"ret":0,"rid":215,"data":{"Ret":""}}
Ret 成功:1
116) 登录当前系统。只有登录用户才可以对AIP文件进行操作(批注|盖章... ...)
请求:{"req":"AIP_Login","rid":216,"para":{"UserID":"","UserType":"","UserAccess":"","UserAccess":"","RemoteAddr":""}}
返回:{"ret":0,"rid":216,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
117) 用于登录AIP网络版服务器
RemoteAddr需先进行UrlEncode编辑
请求:{"req":"AIP_LoginEx","rid":217,"para":{"LoginData":"","DataLen":"","RemoteAddr":""}}
返回:{"ret":0,"rid":217,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
118) 用户退出
请求:{"req":"AIP_LoginEx","rid":218,"para":{}}
返回:{"ret":0,"rid":218,"data":{"Ret":""}}
Ret 成功:1 失败:0
119) 插入批示页。或者合并AIP文件(必须用户登录)
FileName需先进行UrlEncode编辑
请求:{"req":"AIP_MergeFile","rid":219,"para":{"PageStartIndex":"","FileName":""}}
返回:{"ret":0,"rid":219,"data":{"Ret":""}}
Ret 成功:1 失败:0
120) 支持多页合并为一个页面(AIP的版本必须大于3.0)
请求:{"req":"AIP_MergerPage","rid":220,"para":{"Column":"","Row":"","Flag":"","PageWidth":"","PageHeight":"","StartPage":"","EndPage":"","MarginVert":"","MarginHorz":"","SpanVert":"","SpanHorz":""}}
返回:{"ret":0,"rid":220,"data":{"Ret":""}}
Ret 成功:<>0 失败:0
121) 修改节点的名称
请求:{"req":"AIP_ModifyName","rid":221,"para":{"OldName":"","NewName":""}}
返回:{"ret":0,"rid":221,"data":{"Ret":""}}
Ret 成功:<>0 失败:0
122) 部分保护word文档内容
请求:{"req":"AIP_PartialProtect","rid":222,"para":{"PosList":"","Pwd":"","Para":""}}
返回:{"ret":0,"rid":222,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
123) 打印当前文档
请求:{"req":"AIP_PrintDoc","rid":223,"para":{"PrintFlag":"","ShowDlg":""}}
返回:{"ret":0,"rid":223,"data":{"Ret":""}}
Ret 成功:<>0 失败:0
124) 打印文档,提供更详细的打印控制
请求:{"req":"AIP_PrintDocEx","rid":224,"para":{"PrinterName":"","PrintFlag":"","ShowDlg":"","Zoom":"","FromPage":"","ToPage":"","OriSize":"","Copys":"","Collate":"","TranFirst":"","Dulpex":""}}
返回:{"ret":0,"rid":224,"data":{"Ret":""}}
Ret 成功:<>0 失败:0
125) 保护或解除文档保护
请求:{"req":"AIP_ProtectDoc","rid":225,"para":{"Type":"","Pwd":"","Protect":""}}
返回:{"ret":0,"rid":225,"data":{"Ret":""}}
Ret 成功:<>0 失败:0
126) 对文件、用户、节点进行保护限制
请求:{"req":"AIP_ProtectObject","rid":226,"para":{"Name":"","Source":"","Type":"","Old":"","New":""}}
返回:{"ret":0,"rid":226,"data":{"Ret":""}}
Ret 成功:1 失败:0
127) 保护或者解除保护指定的sheet(excel)
请求:{"req":"AIP_ProtectSheet","rid":227,"para":{"SheetIndex":"","Pwd":"","Protect":""}}
返回:{"ret":0,"rid":227,"data":{"Ret":""}}
Ret 成功:1 失败:0
128) 解密文件
InFile、OutFile需先进行UrlEncode编辑
请求:{"req":"AIP_PwdDecFile","rid":228,"para":{"InFile":"","OutFile":"","Pwd":""}}
返回:{"ret":0,"rid":228,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
129) 加密文件
InFile、OutFile需先进行UrlEncode编辑
请求:{"req":"AIP_PwdEncFile","rid":229,"para":{"InFile":"","OutFile":"","Pwd":"","Flag":"0"}}
返回:{"ret":0,"rid":229,"data":{"Ret":""}}
Ret 成功:加密密码 失败:空
130) 读取文件数据
FileName需先进行UrlEncode编辑
请求:{"req":"AIP_ReadLocalFile","rid":230,"para":{"FileName":"","Flag":"0"}}
返回:{"ret":0,"rid":230,"data":{"Ret":""}}
Ret 成功:文件数据 失败:空
131) 单步恢复操作
请求:{"req":"AIP_Redo","rid":231,"para":{}}
返回:{"ret":0,"rid":231,"data":{"Ret":""}}
132) 恢复所有撤销的操作
请求:{"req":"AIP_RedoAll","rid":232,"para":{}}
返回:{"ret":0,"rid":232,"data":{"Ret":""}}
133) 重置打印机
请求:{"req":"AIP_ResetPrinterByStr","rid":233,"para":{"PrintName":""}}
返回:{"ret":0,"rid":233,"data":{"Ret":""}}
Ret 成功:1 失败:<>1
134) 执行控件内部菜单
请求:{"req":"AIP_RunCommand","rid":234,"para":{"CmdType":"","CmdCode":"","RunMode":""}}
返回:{"ret":0,"rid":234,"data":{"Ret":""}}
Ret 成功:1 失败:<>1
135) 将对应的页保存为相应类型图片,以字符串方式返回
请求:{"req":"AIP_SaveAsBase64","rid":235,"para":{"SaveType":"","PageStart":"","PageEnd":"","PageWidth":"","PageHeight":"","ZoomPercent":"","Reserve":""}}
返回:{"ret":0,"rid":235,"data":{"Ret":""}}
Ret 成功:base64字符串
136) 将base64解开并存储到本地文件
FilePath需先进行UrlEncode编辑
请求:{"req":"AIP_SaveBinaryFileFromBase64","rid":236,"para":{"FilePath":"","Base64":""}}
返回:{"ret":0,"rid":236,"data":{"Ret":""}}
137) 文件另存
FileNameOrUrl需先进行UrlEncode编辑
请求:{"req":"AIP_SaveTo","rid":237,"para":{"FileNameOrUrl":"","SaveType":"","Closed":""}}
返回:{"ret":0,"rid":237,"data":{"Ret":""}}
Ret 成功:1 失败:0
138) 将AIP文件保存为TIFF格式
FileName需先进行UrlEncode编辑
请求:{"req":"AIP_SaveToTiff","rid":238,"para":{"FileName":"","DPIX":"","DPIY":"","Bpp":"","Gray":""}}
返回:{"ret":0,"rid":238,"data":{"Ret":""}}
Ret 成功:1 失败:0
139) 查找文字
请求:{"req":"AIP_SearchText","rid":239,"para":{"SearchText":"","MatchCase":"","FindNext":""}}
返回:{"ret":0,"rid":239,"data":{"Ret":""}}
140) 设置背景文件
FileNameOrUrl需先进行UrlEncode编辑
请求:{"req":"AIP_SetBackgroundDoc","rid":240,"para":{"FileNameOrUrl":"","Type":"","PageIndex":""}}
返回:{"ret":0,"rid":240,"data":{"Ret":""}}
Ret 成功:1 失败:<>1
141) 设置指定页面的位置到指定窗口位置
请求:{"req":"AIP_SetCurrPagePos","rid":241,"para":{"PagePosType":"","PagePos":""}}
返回:{"ret":0,"rid":241,"data":{"Ret":""}}
Ret 成功:1 失败:0
142) 设置当前系统时间
请求:{"req":"AIP_SetCurrTime","rid":242,"para":{"DateTime":""}}
返回:{"ret":0,"rid":242,"data":{"Ret":""}}
Ret 成功:1 失败:0
143) 设置当前用户的操作对特定用户的可见性
请求:{"req":"AIP_SetCurrUserVisibilityForUser","rid":243,"para":{"UserID":"","ServerID":"","Del":""}}
返回:{"ret":0,"rid":243,"data":{"Ret":""}}
Ret 成功:1 失败:0
144) 设置显示当前用户操作信息的密码(只有当前登录用户才可以设置)
请求:{"req":"AIP_SetCurrUserVisibilityPwd","rid":244,"para":{"Pwd":""}}
返回:{"ret":0,"rid":244,"data":{"Ret":""}}
Ret 成功:<>0 失败:0
145) 设置用户界面颜色
请求:{"req":"AIP_设置用户界面颜色","rid":245,"para":{"Type":"","Colour":""}}
返回:{"ret":0,"rid":245,"data":{"Ret":""}}
146) 设置书签的内容。只针对word和wps
请求:{"req":"AIP_SetFieldValue","rid":246,"para":{"FieldName":"","Value":"","SheetName":""}}
返回:{"ret":0,"rid":246,"data":{"Ret":""}}
Ret 成功:1 失败:0
147) 设置添加区域的位置
请求:{"req":"AIP_SetNotePos","rid":247,"para":{"NoteName":"","Left":"","Top":"","Width":"","Height":""}}
返回:{"ret":0,"rid":247,"data":{"Ret":""}}
Ret 成功:1 失败:0
148) 设置页面显示模式
请求:{"req":"AIP_SetPageMode","rid":248,"para":{"ZoomType":"","ZoomPercent":""}}
返回:{"ret":0,"rid":248,"data":{"Ret":""}}
149) 设置远程服务器的地址。主要是满足智能卡用户验证其证书或者签名的合法性。网络版本用户专用
请求:{"req":"AIP_SetRemoteAddr","rid":249,"para":{"Addr":""}}
返回:{"ret":0,"rid":249,"data":{"Ret":""}}
150) 设置指定节点或页面的旋转类型
请求:{"req":"AIP_SetRotateType","rid":250,"para":{"Name":"","RotateType":""}}
返回:{"ret":0,"rid":250,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
151) 设置文档是否被修改
请求:{"req":"AIP_SetSaved","rid":251,"para":{"Saved":""}}
返回:{"ret":0,"rid":251,"data":{"Ret":""}}
Ret 成功:0
152) 设置指定类型的用户信息
请求:{"req":"AIP_SetUserInfoEx","rid":252,"para":{"UserID":"","ServerID":"","Type":"","Value":""}}
返回:{"ret":0,"rid":252,"data":{"Ret":""}}
Ret 成功:1 失败:0
153) 设置特定用户的节点信息是否显示
请求:{"req":"AIP_SetUserVisible","rid":253,"para":{"UserID":"","ServerID":"","NewValue":""}}
返回:{"ret":0,"rid":253,"data":{"Ret":""}}
Ret 成功:1 失败:0
154) 设置参数对应的内容
请求:{"req":"AIP_SetValue","rid":254,"para":{"Name":"","Value":""}}
返回:{"ret":0,"rid":254,"data":{"Ret":""}}
Ret 成功:1 失败:<=0
155) 设置参数对应的内容
请求:{"req":"AIP_SetValueEx","rid":255,"para":{"Name":"","Type":"","ParaN":"","ParaS":""}}
返回:{"ret":0,"rid":255,"data":{"Ret":""}}
Ret 成功:1 失败:<=0
156) 显示或隐藏所有用户的节点信息
请求:{"req":"AIP_ShowAllNotes","rid":256,"para":{"Show":"0"}}
返回:{"ret":0,"rid":256,"data":{"Ret":""}}
Ret 成功:1 失败:<=0
157) 显示文件选择框
请求:{"req":"AIP_ShowDialog","rid":257,"para":{"Title":"","InitValue":"","Filter":"","DialogType":""}}
返回:{"ret":0,"rid":257,"data":{"Ret":""}}
Ret 成功:文件路径或目录路径 失败:空
158) 显示文件属性
请求:{"req":"AIP_ShowFileInfo","rid":258,"para":{}}
返回:{"ret":0,"rid":258,"data":{"Ret":""}}
159) 显示文件安全设置对话框
请求:{"req":"AIP_ShowFileSecurity","rid":259,"para":{}}
返回:{"ret":0,"rid":259,"data":{"Ret":""}}
160) 显示消息提示对话框
请求:{"req":"AIP_ShowMessage","rid":260,"para":{"Message":"","Message":"","Message":""}}
返回:{"ret":0,"rid":260,"data":{"Ret":""}}
Ret 请参见MSDN或windowsAPI MessageBox
161) 对指定字符串数据签名(GBK编码)
请求:{"req":"AIP_SignDatay","rid":261,"para":{"Data":"","Pin":""}}
返回:{"ret":0,"rid":261,"data":{"Ret":""}}
Ret 成功:签名后内容 失败:空
162) 控件进入等待状态
请求:{"req":"AIP_SleepSecond","rid":262,"para":{"SleepSecond":""}}
返回:{"ret":0,"rid":262,"data":{"Ret":""}}
Ret 成功:返回等待时间(秒)
163) 将当前文档的指定页保存(暂时仅支持保存为PDF)
SavePath需先进行UrlEncode编辑
请求:{"req":"AIP_SplitPages","rid":263,"para":{"Pages":"","SavePath":"","SaveType":""}}
返回:{"ret":0,"rid":263,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
164) 开始下载文件。下载状态会通过AIP_NotifyAfterAction事件通知
FileName、Url需先进行UrlEncode编辑
请求:{"req":"AIP_StartDownloadFile","rid":264,"para":{"Url":"","FileName":"","Waiting":""}}
返回:{"ret":0,"rid":264,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
165) 停止当前的异步下载线程
请求:{"req":"AIP_StopDownloadFile","rid":265,"para":{}}
返回:{"ret":0,"rid":265,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
166) 单步撤销操作
请求:{"req":"AIP_Undo","rid":266,"para":{}}
返回:{"ret":0,"rid":266,"data":{"Ret":""}}
167) 撤销本次所有操作
请求:{"req":"AIP_UndoAll","rid":267,"para":{}}
返回:{"ret":0,"rid":267,"data":{"Ret":""}}
168) 解压缩
File、Dir需先进行UrlEncode编辑
请求:{"req":"AIP_UnzipFile","rid":268,"para":{"File":"","Dir":"","Pwd":""}}
返回:{"ret":0,"rid":268,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
169) 校验针对指定字符串数据的签名(GBK编码)
请求:{"req":"AIP_VerifyData","rid":269,"para":{"Data":"","SignData":"","Cert":""}}
返回:{"ret":0,"rid":269,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
170) 校验文档中的节点
请求:{"req":"AIP_VerifyNotes","rid":270,"para":{"NoteName":"","ParaS":"","ParaN":""}}
返回:{"ret":0,"rid":270,"data":{"Ret":""}}
Ret 成功: lParam=0:"O-信息" 失败:"X-信息" lParam=0 成功:0 失败:<>0
171) 将数据写入文件
FileName需先进行UrlEncode编辑
请求:{"req":"AIP_WriteLocalFile","rid":271,"para":{"FileName":"","FileData":"","Flag":""}}
返回:{"ret":0,"rid":271,"data":{"Ret":""}}
Ret 成功:0 失败:<>0
172) 播放Flash
FileName需先进行UrlEncode编辑
请求:{"req":"AIP_PlayFlash","rid":272,"para":{"FileName":"","LoopPlay":""}}
返回:{"ret":0,"rid":272,"data":{"Ret":""}}
173) 请求退出小程序
请求:{"req":"AIP_Exit","rid":273,"para":{}}
5、AIP电子签章内嵌网页小程序接收的通知:
这些通知必须通过WebSocket连接到此小程序侦听的端口才能接收到。
A、ActiveX事件:
1) 点击时触发
{"event":"AIP_NotifyClick","data":{"Name":\"\"}} Name点击名称
2) 执行ActionType操作前触发
{"event":"AIP_JSNotifyBeforeAction","data":{"Name":"","Value":"","ActionType":"0","Type":""}}
3) 点击菜单按钮时触发
{"event":"AIP_JSNotifyMenuMsg","data":{"Cmd":""}} Cmd为请求命令
4) 执行ActionType操作后触发
{"event":"AIP_NotifyAfterAction","data":{"Name":"","Value":"","ActionType":"0","Type":""}}
5) 在异步调用完成时,触发本消息
{"event":"AIP_NotifyAsyncCall","data":{"CallID":"","Value":"","RetN":"0","Ret":""}}
6) 执行ActionType操作前触发
{"event":"AIP_NotifyBeforeAction","data":{"Name":"","Value":"","ActionType":"0","Type":""}}
6) 改变当前用户时触发
{"event":"AIP_NotifyChangeCurrUser","data":{}}
7) 改变当前用户颜色时触发
{"event":"AIP_NotifyChangePage","data":{}}
8) 改变当前页面时触发
{"event":"AIP_NotifyChangePenColor","data":{}}
9) 改变当前用户笔的宽度时触发
{"event":"AIP_NotifyChangePenWidth","data":{}}
10) 在页面缩放、预览、阅读模式改变时触发
{"event":"AIP_NotifyChangeStatus","data":{"StatusType":"1"}}
11) 值改变时触发
{"event":"AIP_NotifyChangeValue","data":{"Name":"","Value":""}}
12) AIP文档关闭完成时触发
{"event":"AIP_NotifyCloseDoc","data":{}}
13) AIP引擎初始化完毕之后触发
{"event":"AIP_NotifyCtrlReady","data":{}}
14) AIP文档打开完成的时候触发
{"event":"AIP_NotifyDocOpened","data":{"OpenResult":""}}
15) 捕获部分Word/Excel/Wps事件
{"event":"AIP_NotifyDocumentEvent","data":{"Name":""}}
16) AIP全屏幕显示状态改变时候触发
{"event":"AIP_NotifyFullScreen","data":{}}
17) 鼠标在文档上按住左键,移动鼠标,此时会在页面上画出一个矩形的线框,松开鼠标左键,此时会触发NotifyLineAction事件
{"event":"AIP_NotifyLineAction","data":{"Page":"","StartPos":"","EndPos":""}}
18) 点击菜单按钮时触发
{"event":"AIP_NotifyMenuMsg","data":{"Cmd":""}}
19) AIP修改状态发生改变时触发
{"event":"AIP_NotifyModifyStatus","data":{}}
20) 节点位置改变时触发
{"event":"AIP_NotifyPosChange","data":{"NoteName":""}}
21) 在通过AIP_SetValue设置("SET_PENMESSAGE_OUTPUTMODE", "1")激活后,手写输入在可写区域以外时触发本消息。
{"event":"AIP_NotifyPressPen","data":{"ScreenX":"","ScreenY":"","Press":""}}
22) 指定名称重置时触发
{"event":"AIP_NotifyReset","data":{"Name":""}}
23) 用户选择节点时触发
{"event":"AIP_NotifySelect","data":{"Name":"","NoteType":""}}
24) 提交时触发
{"event":"AIP_NotifySumbit","data":{"Name":""}}
B、PluginOK支持的事件通知:
1) AIP_FullScreen 小程序是否响应了热键全屏
{"event":""AIP_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
Autodesk内嵌网页小程序:基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )开发,底层调用Autodesk的AutoCAD软件VBA接口及DWG True View或Design Review的OCX控件实现可程序化驱动的dwg等工程图在线查看、编辑、审阅等,可分别将AutoCAD、DWG True View、Design Review软件窗口内嵌到网页指定区域运行并操控。最低可用在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、Autodesk内嵌网页小程序控制相关接口:
说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。
HTTP网页在线测试:http://zorrosoft.com/acadfull.html HTTPS网页在线测试:https://zorrosoft.com/acadframe.html
前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码;
A、标记小程序的显示位置和大小
.ACADApplet {
margin: 20px 0 0 20px;
width: 480px;
height: 320px;
border: 1px solid blue;
}
或者
.ACADApplet {
width: 480px;
height: 320px;
top: 20px;
left: 20px;
border: 1px solid blue;
}
B、嵌入
支持IFrame的:
<iframe name="ACADApplet" id="ACADApplet" src="AcadApplet3.html" frameborder="0" align="left" width="550" height="540" scrolling="no></iframe>
或者直接用
<div id="ACADApplet" class="ACADApplet"</div>
另外需要嵌入用到的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
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的效果。
文件操作浏览器小程序,基于跨浏览器的小程序系统-PluginOK(牛插)中间件(https://github.com/wangzuohuai/WebRunLocal)开发,提供本地文件HTTP协议的上传与下载、本地图像文件旋转与缩放、本地文件访问、本地程序运行等服务。最低可用在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、请求安装文件操作小程序:
{"req":"Plugin_Install","rid":1,"para":{"Name":"文件操作小程序","PID":"199BB8A7-9DD5-41F5-AE9D-2AA94300B0B3","Date":"2020-12-12","Desc":"PluginOK中间件之上跨浏览器的文件操作小程序,提供文件HTTP协议上传与下载、本地图像文件缩放与旋转、本地文件访问、本地程序运行等服务,可在Chrome、Edge、Firefox、IE、Opera、360、QQ等的浏览器最新版中调用","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协议上传与下载、本地图像文件缩放与旋转、本地文件访问、本地程序运行等服务,可在Chrome、Edge、Firefox、IE、Opera、360、QQ等的浏览器最新版中调用","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、批量旋转图像文件
SrcFile、DestFile传入前需进行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指定角度Angle,DestFile为指定时代表生成新图像文件,不指定时直接覆盖到原图
返回内容 {"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、下载文件
Url、File传入前需进行UrlEncode编码
{"req":"File_Download","rid":1,"para":{"Cookie":"","Auth":"","Items":[{"ID":"","Url":"","File":"","MD5":"","Size":300}]}} 批量下载指定URL及文件名File等参数的文件,ID是前端指定的唯一ID,返回添加成功数量,重复的不计算,增加下载权限参数Cookie及Auth
B、上传文件
Url、Items子项目传入前需进行UrlEncode编码
{"req":"File_Upload","rid":2,"para":{"ID":"","Url":"","Cookie":"","Auth":"","Para":{},"Items":["c:/Newtest.jpg","c:/test.jpg"]}} 批量上传到指定URL的本地文件,返回添加成功数量,重复的不计算
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.txt、SDK包中的“PluginOK开发者手册.doc”及“PluginOK中间件安全解决方案”。
如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938
\ No newline at end of file
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的:
<iframe name="FlashApplet" id="FlashApplet" src="FlashApplet3.html" frameborder="0" align="left" width="550" height="540" scrolling="no">
或者直接用
<div id="FlashApplet" class="FlashApplet"</div>
另外需要嵌入用到的JS脚本,脚本程序是完全开源的。
1)、请求启动Flash Player内嵌网页小程序:
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设定的值做修正
Url:加载小程序所在的网页实际地址
Open:为需要播放的多媒体路径,磁盘目录斜杠用/
注意:Open和Url如果有特殊字符或中文等,需要用URL编码处理后传递
举例:
自动识别当前浏览器指定位置和大小启动:
{"req":"Wrl_FlashApplet","rid":1,"para":{"Type":"0","Title":"Flash Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url":"http://zorrosoft.com/FlashApplet.html","Open":"http://zorrosoft.com/Files/test.swf"}}
自动识别当前浏览器自动适配网页大小启动:
{"req":"Wrl_FlashApplet","rid":3,"para":{"Type":"0","Title":"Flash Applet","Flag":9,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url":"http://zorrosoft.com/FlashApplet.html","Open":"http://zorrosoft.com/Files/test.swf"}}
当前页指定位置自动适配网页加载测试
http://zorrosoft.com/flashframe.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":"E7C7BDA6-C828-46F1-A7BA-B4C572A01100","Port":990}}
返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如新播放一个Flash。
2)、请求控制Flash Player内嵌网页小程序:
当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等
ID为Wrl_FlashApplet启动小程序时返回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)、请求滚动网页中Flash Player内嵌网页小程序:
当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动
ID为启动小程序时返回JSON中的ID值
Code为滚动方向1是水平直,2是垂直,3是同时
Left为横向滚动条位置,Top为纵向滚动条位置
{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}}
4)、请求改变网页中Flash Player内嵌网页小程序显示位置或大小:
当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小
ID为Wrl_FlashApplet启动小程序时返回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)、请求缩放网页中Flash Player内嵌网页小程序,用于浏览器网页按比例缩放时响应,一般不需要处理:
ID为Wrl_FlashApplet启动小程序时返回的ID值,Scall为缩放百分比
{"req":"Wrl_AppletScale","rid":7,"para":{"ID":1,"Scale":120}}
3、小程序安装、升级、卸载
1)、请求安装Flash Player内嵌网页小程序
请在输入框中,输入如下请求,然后点击发送,完成安装:
{"req":"Plugin_Install","rid":1,"para":{"Name":"Flash Player内嵌网页小程序","PID":"E7C7BDA6-C828-46F1-A7BA-B4C572A01100","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的Flash Player内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌使用","DownAddr":"http://local.zorrosoft.com/Files/Plugin/FlashApplet.pid","MD5":"8BC01FA1DB86B9A0D04F247790229A1E","Version":"2.0.3.11","Size":524288,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"2DA27288A218FABF06D6AB8735F009D7236516290AAE5E9719608670FD97FC5503C0275AFC2F051949464199D4386A9A3E1531291D1A5CE6F137B8A4CD2165D235290A6EA162306777E9F10E7EB6F354B3C15AA00F56568E40D55B3C9F99484B1B2EB63119B995990DDD50F1528D44B54CA5E00669BCD55DFB47A22A2F1B9B8A557B895EAE65EC90C3727C52042D1B4DFD9276D3B382C56F1690974ACD9B219750349647B8A45C7CC9E37DF63B8D56721BD3CF2CDEB133043EE2D243EECD3EFBA6CF6094CCA0521F49252A63E0446B27B4C5E41A826A58B6B365F00213BBDB682682166A169E7E17B55FC39A86F663492235CD36594CB7BA2319CE08C30C8D98"}}
启动安装后,会不断收到安装进度直到安装结束。
2)、请求升级Flash Player内嵌网页小程序:
{"req":"Plugin_Update","rid":1,"para":{"Name":"Flash Player内嵌网页小程序","PID":"E7C7BDA6-C828-46F1-A7BA-B4C572A01100","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的Flash Player内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌使用","DownAddr":"http://local.zorrosoft.com/Files/Plugin/FlashApplet_Update.pid","MD5":"82AC72E2BA176EA2884143C7ABBA07CE","Version":"2.0.3.11","Size":524288,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"77144F52D980B80B04DD1E3EC7FAD6BE50BE1DE747EF1D1C6EB169A301F1CC541182D2817AE059230485DAD69B9864D8115863A4BAFAD185B81379DC9DB90807DA5864AE9645F36796A273FBB0A41CD0772F539BDF0FDA04F9B530A466C201C564151A23DD0477CA0F3A4BDD37D507F6195794107195207AD4D3B89DA4CAC6FCB77B4D48ABA077387E778F1F0DE17B411E16B200AF2AEC3C5C196EC5D4A154DC409E9F4394C3930EC8FB4E1EB95C416A7867F90910F74AFC0721815011795B8A44BE41A6B0CDD29449AE7A41FF3D2A56D972C55F573BE6F18A72E4552DCBCC7573F341A0DE08F5287D67106729C6571AD93D0C212D6A21605635216355122C0A"}}
以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。
3)、请求卸载Flash Player内嵌网页小程序:
{"req":"Plugin_Remove","rid":3,"para":{"PID":"E7C7BDA6-C828-46F1-A7BA-B4C572A01100","Type":8}}
4、Flash Player小程序转调用ActiveX接口,先根据Wrl_FlashApplet请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令:
A、常用功能请求:
1) 当前是否在播放
请求:{"req":"Flash_IsPlaying","rid":50,"para":{}}
返回:{"ret":0,"rid":50,"data":{"IsPlaying":"1"}}
ret为请求返回值,0正常,非零不正常,不正常时请取和ret同级的错误描述err,下同
IsPlaying为1代表正常播放
2) 设置是否循环播放
请求:{"req":"Flash_PutLoop","rid":51,"para":{"Loop":"1"}}
返回:{"ret":0,"rid":51,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
3) 获取是否循环播放
请求:{"req":"Flash_GetLoop","rid":52,"para":{}}
返回:{"ret":0,"rid":52,"data":{"Loop":"1"}}
Loop返回是否循环播放,1代表循环
4) 设置播放内容
请求:{"req":"Flash_PutMovie","rid":53,"para":{"Movie":"http://zorrosoft.com/Files/test.swf"}}
Movie为播放路径,如果是本地文件或非英文的,本地路径斜杠\替换为反斜杠/,非英文的需要URL编码后再传递
返回:{"ret":0,"rid":53,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
5) 获取循环内容
请求:{"req":"Flash_GetMovie","rid":54,"para":{}}
返回:{"ret":0,"rid":54,"data":{"Movie":"http://zorrosoft.com/Files/test.swf"}}
Movie返回循环内容
6) 请求播放执行
请求:{"req":"Flash_Play","rid":55,"para":{}}
返回:{"ret":0,"rid":55,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
7) 请求播放停止
请求:{"req":"Flash_Stop","rid":56,"para":{}}
返回:{"ret":0,"rid":56,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
8) 请求播放回退
请求:{"req":"Flash_Back","rid":57,"para":{}}
返回:{"ret":0,"rid":57,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
9) 请求播放前进
请求:{"req":"Flash_Forward","rid":58,"para":{}}
返回:{"ret":0,"rid":58,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
10) 请求Flash的版本
请求:{"req":"Flash_Version","rid":59,"para":{}}
返回:{"ret":0,"rid":59,"data":{"Ret":"0"}}
Version返回版本信息
11) 请求退出小程序
请求:{"req":"Flash_Exit","rid":60,"para":{}}
B、其他功能请求:
1) 请求获取Flash参数
请求:{"req":"Flash_GetFlashVars","rid":70,"para":{}}
返回:{"ret":0,"rid":70,"data":{"FlashVars":""}}
FlashVars返回参数
2) 请求设置Flash参数
请求:{"req":"Flash_PutFlashVars","rid":71,"para":{"FlashVars":"Test"}}
返回:{"ret":0,"rid":71,"data":{"Ret":""}}
Ret为调用ActiveX对应函数返回值,0代表正常
3) 请求获取参数
请求:{"req":"Flash_GetVariable","rid":72,"para":{"Name":"Test"}}
返回:{"ret":0,"rid":72,"data":{"Variable":""}}
FlashVars返回参数
4) 请求设置参数
请求:{"req":"Flash_PutVariable","rid":73,"para":{"Name":"Test","Value":"1"}}
返回:{"ret":0,"rid":73,"data":{"Ret":""}}
Ret为调用ActiveX对应函数返回值,0代表正常
5) 请求获取就绪状态
请求:{"req":"Flash_GetReadyState","rid":74,"para":{}}
返回:{"ret":0,"rid":74,"data":{"ReadyState":""}}
ReadyState返回就绪状态
6) 请求获取总帧数
请求:{"req":"Flash_GetTotalFrames","rid":75,"para":{}}
返回:{"ret":0,"rid":75,"data":{"TotalFrames":""}}
ReadyState返回就绪状态
7) 请求获取加载百分比
请求:{"req":"Flash_PercentLoaded","rid":76,"para":{}}
返回:{"ret":0,"rid":76,"data":{"PercentLoaded":""}}
PercentLoaded返回加载百分比
8) 请求获取播放品质
请求:{"req":"Flash_GetQuality","rid":77,"para":{}}
返回:{"ret":0,"rid":77,"data":{"Quality":""}}
Quality返回播放品质
9) 请求设置播放品质
请求:{"req":"Flash_PutQuality","rid":78,"para":{"Quality":1}}
返回:{"ret":0,"rid":78,"data":{"Ret":""}}
Ret为调用ActiveX对应函数返回值,0代表正常
10) 请求获取背景色
请求:{"req":"Flash_GetBackgroundColor","rid":79,"para":{}}
返回:{"ret":0,"rid":79,"data":{"BackgroundColor":""}}
BackgroundColor返回播放品质
11) 请求设置背景色
请求:{"req":"Flash_PutBackgroundColor","rid":80,"para":{"BackgroundColor":-1}}
返回:{"ret":0,"rid":80,"data":{"Ret":""}}
Ret为调用ActiveX对应函数返回值,0代表正常
12) 请求退出小程序
请求:{"req":"Flash_Exit","rid":81,"para":{}}
如您需要更多的接口,请联系我们。
5、Flash Player内嵌网页小程序接收的通知:
这些通知必须通过WebSocket连接到此小程序侦听的端口才能接收到。
A、ActiveX事件:
1) ReadyState状态变化事件通知
{"event":"Flash_ReadyStateChange","data":{"State":0}} State为状态值
2) Progress进度事件通知
{"event":"Flash_Progress","data":{"Percent":0}} Percent为进度百分比
3) FSCommand执行事件通知
{"event":"Flash_FSCommand","data":{"Command":"","Args":""}} Command为请求命令,Args为参数
4) Call事件通知
{"event":"Flash_Call","data":{"Request":""}} Request为请求
B、PluginOK支持的事件通知:
1) Flash_FullScreen 小程序是否响应了热键全屏
{"event":"Flash_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
IE控件小程序(内嵌网页):基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )开发,底层调用IE内核的ActiveX控件实现可程序化驱动的双内核浏览器。最低可用在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、IE控件内嵌网页小程序控制相关接口:
说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。
HTTP网页在线测试:http://zorrosoft.com/iefull.html HTTPS网页在线测试:https://zorrosoft.com/ieframe.html
前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码;
A、标记小程序的显示位置和大小
.IEApplet {
margin: 20px 0 0 20px;
width: 480px;
height: 320px;
border: 1px solid blue;
}
或者
.IEApplet {
width: 480px;
height: 320px;
top: 20px;
left: 20px;
border: 1px solid blue;
}
B、嵌入
支持IFrame的:
<iframe name="IEApplet" id="IEApplet" src="IEApplet3.html" frameborder="0" align="left" width="550" height="540" scrolling="no">
或者直接用
<div id="IEApplet" class="IEApplet"</div>
另外需要嵌入用到的JS脚本,脚本程序是完全开源的。
1)、请求启动IE控件内嵌网页小程序实现网页中局部加载IE内核网页显示:
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设定的值做修正
Version 指定加载的IE版本,0不指定,比如9999是IE9标准模式 8888是IE8标准模式 8000是IE8兼容模式 7000是IE7 详细定义参考:https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330730(v=vs.85)?redirectedfrom=MSDN#browser_emulation
X64:是否启动64位版
Url:加载小程序所在的网页实际地址
Open:为需要用IE内核打开的Url地址或本地网页地址
注意:Open和Url如果有特殊字符或中文等,需要用URL编码处理后传递
举例:
自动识别当前浏览器指定位置和大小启动:
{"req":"Wrl_IEApplet","rid":1,"para":{"Type":"0","Title":"IE Applet","Flag":3,"Version":"0","X64":"0","IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/IEApplet.html","Open":"http://www.zorrosoft.com"}}
自动识别当前浏览器指定位置自动适配网页大小启动:
{"req":"Wrl_IEApplet","rid":2,"para":{"Type":"0","Title":"IE Applet","Flag":11,"Version":"0","X64":"0","IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/IEApplet.html","Open":"http://www.zorrosoft.com"}}
当前页指定位置自动适配网页加载测试
http://zorrosoft.com/ieframe.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":"18BDC030-AF37-50E1-B0AE-E5EF336BE282","Port":985}}
返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如新打开一个网页。
2)、请求控制IE控件内嵌网页小程序:
当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等
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)、请求滚动IE控件内嵌网页小程序:
当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动
ID为启动小程序时返回JSON中的ID值
Code为滚动方向1是水平直,2是垂直,3是同时
Left为横向滚动条位置,Top为纵向滚动条位置
{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}}
4)、请求改变IE控件内嵌网页小程序显示位置或大小:
当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小
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)、请求缩放IE控件内嵌网页小程序,用于浏览器网页按比例缩放,一般不需要处理:
ID为启动小程序时返回JSON中的ID值,Scall为缩放百分比
{"req":"Wrl_AppletScale","rid":7,"para":{"ID":1,"Scale":120}}
3、小程序安装、升级、卸载
1)、请求安装IE控件内嵌网页小程序
请在输入框中,输入如下请求,然后点击发送,完成安装:
{"req":"Plugin_Install","rid":1,"para":{"Name":"IE控件小程序","PID":"18BDC030-AF37-50E1-B0AE-E5EF336BE282","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的IE控件内嵌网页小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌使用","DownAddr":"http://local.zorrosoft.com/Files/Plugin/IEApplet.pid","MD5":"F6E95C632B79D29951FB07BB9111D31F","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"63746BE3DCBCAB381B0734CF901178EB1732153DB2D9362D0A0E02A6DB988D2AE3E9CAF3CFD8F592B64B5774DA31E29A47DB5F0184AE93EE33D9763E92B883E3F0DE415EC51BD47E56F16C1EEF2A9ABB9490F85374530DE648129B677E070E5689408BE40A87A5C4A7094ECD4F9B672C1A9FEA14A6E2CA920276C5E3AF74C412E00F3B11FF99C37105C5B14BA141AFEE3E0F1F9A1A14D69E6C02B286410319609215137598E6B26F065360C78303D5E1C3AB7264160619400A51B40A3C052FAD87A418BD399E775BCF832123B4BBF3E541295E25858C909F4892B071D21F1DA15AF24B24098FC34E3E52CF3B9C3BA147ED98F5BC448647592B5DAB0B9A80551D"}}
启动安装后,会不断收到安装进度直到安装结束。
在发布时,也可以把此小程序目录文件和中间件一起打包后发布,不用单独分发。
2)、请求升级IE内核内嵌小程序:
{"req":"Plugin_Update","rid":1,"para":{"Name":"IE控件小程序","PID":"18BDC030-AF37-50E1-B0AE-E5EF336BE282","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的IE控件内嵌网页小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌使用","DownAddr":"http://local.zorrosoft.com/Files/Plugin/IEApplet_Update.pid","MD5":"189EF6FA72F2F861E1115AF548E83115","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"92B8F79F52D566062AE98A3C2FAA994133EF42175C2F6945A681082F1FCA8EE63FBD2C37BD76B34312E0F6D498B17FAD8DBFEF14FE901A697885698EA46BA6073C991C04AF651C662F36F78FF962D14679AA2669DEAE186F353D642B4796A06DAA6905248D32EA0240717410A5AFF43B238056C3C91F41578FBE6A48453251CC57C5204A1CAABCA2B6CC0DD3B60802A307639E5B538A5CE4D26F5E1D789E979AC4BAEA0E5D0EAAD05473D7AF668E5104189BB8C458B2BDB3642E887E7E58031854A4161254DBC7D00BDC7CFAF3C5927CD59B0D525B775F3750C95F8316848CC1A687939382D821100CFEB62B528231326AE93BE388488E4D0F7320409D5C485D"}}
以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。
3)、请求卸载IE控件内嵌网页小程序:
{"req":"Plugin_Remove","rid":3,"para":{"PID":"18BDC030-AF37-50E1-B0AE-E5EF336BE282","Type":8}}
4、IE控件内嵌网页小程序转调用ActiveX接口,先根据Wrl_IEApplet请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令:
A、常用功能请求:
1) 停止
请求:{"req":"IE_Stop","rid":50,"para":{}}
返回:{"ret":0,"rid":50,"data":{"Ret":"0"}}
ret为请求返回值,0正常,非零不正常,不正常时请取和ret同级的错误描述err,下同
Ret为调用ActiveX对应函数返回值,0代表正常
2) 刷新网页
请求:{"req":"IE_Refresh","rid":51,"para":{"Loop":"1"}}
返回:{"ret":0,"rid":51,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
3) 回退
请求:{"req":"IE_GoBack","rid":52,"para":{}}
返回:{"ret":0,"rid":52,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
4) 前进
请求:{"req":"IE_GoForward","rid":53,"para":{}}
返回:{"ret":0,"rid":53,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
5) 导航到主页
请求:{"req":"IE_GoHome","rid":54,"para":{}}
返回:{"ret":0,"rid":54,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
6) 导航到指定网页
请求:{"req":"IE_Navigate","rid":55,"para":{"Url":"http://www.baidu.com"}}
返回:{"ret":0,"rid":55,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
7) 请求执行脚本,必须等文档加载完成后
Code为需要执行的脚本内容
Language 脚本类型
请求:{"req":"IE_ExecScript","rid":56,"para":{"Code":"alert(\"hello\");","Language":"javascript"}}
返回:{"ret":0,"rid":56,"data":{"Ret":"0","ScriptRet":""}}
Ret为调用返回值,0代表正常
ScriptRet执行脚本返回内容,只支持字符型,非字符型先用BASE64编码
8) 请求注入脚本,必须等文档加载完成后
Code为需要注入的脚本内容
请求:{"req":"IE_AddScript","rid":57,"para":{"Code":"alert(\"hello\");"}}
返回:{"ret":0,"rid":57,"data":{"Ret":"0"}}
Ret为调用返回值,0代表正常
9) 请求调用脚本(已在打开的网页中),必须等文档加载完成后
FuncName脚本函数名称
Para函数参数
请求:{"req":"IE_InvokeScript","rid":58,"para":{"FuncName":"HelloWord";","Para":["My","Name"]}}
返回:{"ret":0,"rid":58,"data":{"Ret":"0","FuncRet":""}}
Ret为调用返回值,0代表正常
FuncRet调用函数返回内容,只支持字符型,非字符型先用BASE64编码
10) 请求退出小程序
请求:{"req":"IE_Exit","rid":59,"para":{}}
5、事件通知:
A、IE控件事件
1) IE_BeforeNavigate 准备打开新的URL
{"event":"IE_BeforeNavigate","data":{"Url":""}} Url为新打开的URL地址
2) IE_NavigateComplete URL打开完成
{"event":"IE_NavigateComplete","data":{"Url":""}} Url为URL地址
3) IE_DocumentComplete URL文档加载完成
{"event":"IE_DocumentComplete","data":{"Url":""}} Url为URL地址
4) IE_NewNavigate 新窗口打开指定URL
{"event":"IE_NewNavigate","data":{"Url":"","Ret":0}} Url为新URL地址 Ret为打开结果
5) IE_ProgressChange 进度条进度通知
{"event":"IE_ProgressChange","data":{"Progress":0,"Max":0}} Progress当前进度 Max进度最大值
6) IE_SetSecureLockIcon 设置安全锁定图标
{"event":"IE_SetSecureLockIcon","data":{"SecureLockIcon":0}}
7) IE_StatusTextChange 状态变化
{"event":"IE_StatusTextChange","data":{"Status":""}} Status状态文字描述
8) IE_TitleChange 标题变化
{"event":"IE_TitleChange","data":{"Title":""}} Title 标题
9) IE_WindowClosing 窗口关闭
{"event":"IE_WindowClosing","data":{"ChildWindow":0}} ChildWindow是否子窗口
10) IE_CommandStateChange 命令状态变化
{"event":"IE_CommandStateChange","data":{"Command":0,"Enable":0}} Command命令ID,Enable是否启用
B、PluginOK支持的事件通知:
1) IE_FullScreen 小程序是否响应了热键全屏
{"event":"IE_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
文件已添加
IE标签页小程序:基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )开发,底层调用IE内核的ActiveX控件实现可程序化驱动的双内核浏览器。最低可用在Chrome 41、Firefox 52、Edge 80(Chromium内核)、360极速/安全、IE、Oprea 36、QQ等浏览器,也兼容运行于这些浏览器的最新版本。
1、PluginOK(牛插)中间件的安装:
1)、如果是exe的安装程序,请直接运行安装;
2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装;
3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有WrlService.txt日志文件输出运行情况。
2、IE标签页小程序控制相关接口:
说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。
HTTP网页在线测试:http://zorrosoft.com/ienewtab.html HTTPS网页在线测试:https://zorrosoft.com/ienewtab.html
1)、请求启动IE标签页小程序:
Type为浏览器类型,传0自动判断(前提是当前浏览器已启动并显示在最前端,Flag指定当前页加载时必须是0) 可强制指定浏览器类型Type(2代表Chrome 4代表Firefox 8代表Opera 16代表Edge(Chromium内核) 32代表360极速浏览器 33代表360安全浏览器 34代表360企业安全浏览器 50代表QQ浏览器 60代表搜狗浏览器)
Flag掩码标记:1指定标签页加载(1和16都不指定时为当前页加载) 2小程序显示窗口边框 64根据标题避免重复加载相同的小程序
Title:标签页页时为创建的网页标题
Version 指定加载的IE版本,0不指定,比如9999是IE9标准模式 8888是IE8标准模式 8000是IE8兼容模式 7000是IE7 详细定义参考:https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330730(v=vs.85)?redirectedfrom=MSDN#browser_emulation
X64:是否启动64位版
Url:加载小程序所在的网页地址
Open:为需要用IE内核打开的Url实际地址或本地网页地址
注意:Open和Url如果有特殊字符或中文等,需要用URL编码处理后传递
举例:
自动识别当前浏览器启动:
{"req":"Wrl_IETab","rid":6,"para":{"Type":"0","Flag":1,"Title":"IE Tab","Version":"0","X64":"0","Open":"http://xiuxiu.web.meitu.com/main.html"}}
浏览器当前页面启动演示
http://zorrosoft.com/IENewTab.html
启动后会先后收到两个JSON数据包
A、{"ret":0,"rid":1,"data":{"ID":1}}
返回ID为当前小程序运行ID,通过此ID,可执行Wrl_AppletControl命令。
B、{"event":"Wrl_Listen","aid":1,"data":{"SID":"123","PID":"18BDC030-AF37-50E1-B0AE-E5EF336BE281","Port":980}}
返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如新打开一个网页。
2)、请求控制IE标签页小程序:
当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等
ID为Wrl_IETab启动小程序时返回的ID值,Code代表控制类型掩码:1关闭 2全屏显示 4自动隐藏 8还原显示。其中全屏显示2,可直接通过热键ESC或取消,4隐藏后可通过8恢复显示
{"req":"Wrl_AppletControl","rid":2,"para":{"ID":"1","Code":4}}
3、小程序安装、升级、卸载
1)、请求安装IE标签页小程序
请在输入框中,输入如下请求,然后点击发送,完成安装:
{"req":"Plugin_Install","rid":1,"para":{"Name":"IE标签页小程序","PID":"18BDC030-AF37-50E1-B0AE-E5EF336BE281","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的IE标签页内嵌小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌使用","DownAddr":"http://local.zorrosoft.com/Files/Plugin/IENewTab.pid","MD5":"93CFD040B121A10C77CB4A0563E93690","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"A27E174AD1FBCF4844BA88D9A18C701E522BBE7681D66579215D1879E33D8D5B36DF7C8457F2F831E0F0A2C3F1A809A39A6EB0E20E2DA6A80A833DF0EE5CE5216ACA09A4FF670F43ADA0AB537DAE6A3429795EBEAB8CCD3A8B878ACB9C5595EA0E6F64C9DB4900F8D3F36260F3BA4EC53B2B1A78599F461A7841AC2A45DD2FF11B89A42720853A490EA668489F1B5CE15C72B48C06185F898A77D054B095806CA4D033249029876E0DE6A1D9ED37A428B959CEED2DBC1B5D5EBC18556F557230FA0FE942072749C2592375D985C3228D7EC55727030DD4496F13E551101588BE3BD3F4888DDA346E1F0D4BE5213D13814CA1D33AA0633B9D43A212507D9900B4"}}
启动安装后,会不断收到安装进度直到安装结束。
2)、请求升级IE标签页小程序:
{"req":"Plugin_Update","rid":1,"para":{"Name":"IE标签页小程序","PID":"18BDC030-AF37-50E1-B0AE-E5EF336BE281","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的IE标签页内嵌小程序,支持在Chrome、Edge、Firefox、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌使用","DownAddr":"http://local.zorrosoft.com/Files/Plugin/IENewTab_Update.pid","MD5":"8D5D3EFD60AE53D4757BF270DF1374D3","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"65B230C51C1CB33DFBC2F3BC42077B8DA2BF09C678C4FA871C936486802D562BEC92C2FD51F0977645B9B777345DC08D60860830CC547C1BED2F3582B54FAD3871581AB1C4AB2C205ECA759E6AE5433B30AB26F7B1EEA6FE585DE7F28FEDD69A94A80D7BA20B3DF91E3E6C2468AB4FCF1D1001A3A2D84072565AE2EFFB6E86AF360DEFA262CDF7BAB032971C4FC480B7338D2B966E918D9EAC1E483EBF1993E5435978DC174EB8A2895FB61B66A23DD7D3C26DD69EB6BD0BC95A655ECBA7E2487D5823F47D56CE19A9FA71FB0844B342127DAB14FC8E3124314857FD10A585C80E3DB3194FB275A6A8EC2F6FE713112DAA3005D543095D98840911020088D05B"}}
以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。
3)、请求卸载IE标签页小程序:
{"req":"Plugin_Remove","rid":3,"para":{"PID":"18BDC030-AF37-50E1-B0AE-E5EF336BE281","Type":8}}
4、IE标签页小程序转调用ActiveX接口,先根据Wrl_IETab请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令:
A、常用功能请求:
1) 停止
请求:{"req":"IE_Stop","rid":50,"para":{}}
返回:{"ret":0,"rid":50,"data":{"Ret":"0"}}
ret为请求返回值,0正常,非零不正常,不正常时请取和ret同级的错误描述err,下同
Ret为调用ActiveX对应函数返回值,0代表正常
2) 刷新网页
请求:{"req":"IE_Refresh","rid":51,"para":{"Loop":"1"}}
返回:{"ret":0,"rid":51,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
3) 回退
请求:{"req":"IE_GoBack","rid":52,"para":{}}
返回:{"ret":0,"rid":52,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
4) 前进
请求:{"req":"IE_GoForward","rid":53,"para":{}}
返回:{"ret":0,"rid":53,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
5) 导航到主页
请求:{"req":"IE_GoHome","rid":54,"para":{}}
返回:{"ret":0,"rid":54,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
6) 导航到指定网页
请求:{"req":"IE_Navigate","rid":55,"para":{"Url":"http://www.baidu.com"}}
返回:{"ret":0,"rid":55,"data":{"Ret":"0"}}
Ret为调用ActiveX对应函数返回值,0代表正常
7) 请求执行脚本,必须等文档加载完成后
Code为需要执行的脚本内容
Language 脚本类型
请求:{"req":"IE_ExecScript","rid":56,"para":{"Code":"alert(\"hello\");","Language":"javascript"}}
返回:{"ret":0,"rid":56,"data":{"Ret":"0","ScriptRet":""}}
Ret为调用返回值,0代表正常
ScriptRet执行脚本返回内容,只支持字符型,非字符型先用BASE64编码
8) 请求注入脚本,必须等文档加载完成后
Code为需要注入的脚本内容
请求:{"req":"IE_AddScript","rid":57,"para":{"Code":"alert(\"hello\");"}}
返回:{"ret":0,"rid":57,"data":{"Ret":"0"}}
Ret为调用返回值,0代表正常
9) 请求调用脚本(已在打开的网页中),必须等文档加载完成后
FuncName脚本函数名称
Para函数参数
请求:{"req":"IE_InvokeScript","rid":58,"para":{"FuncName":"HelloWord";","Para":["My","Name"]}}
返回:{"ret":0,"rid":58,"data":{"Ret":"0","FuncRet":""}}
Ret为调用返回值,0代表正常
FuncRet调用函数返回内容,只支持字符型,非字符型先用BASE64编码
10) 请求退出小程序
请求:{"req":"IE_Exit","rid":59,"para":{}}
5、事件通知:
A、IE控件事件
1) IE_BeforeNavigate 准备打开新的URL
{"event":"IE_BeforeNavigate","data":{"Url":""}} Url为新打开的URL地址
2) IE_NavigateComplete URL打开完成
{"event":"IE_NavigateComplete","data":{"Url":""}} Url为URL地址
3) IE_DocumentComplete URL文档加载完成
{"event":"IE_DocumentComplete","data":{"Url":""}} Url为URL地址
4) IE_NewNavigate 新窗口打开指定URL
{"event":"IE_NewNavigate","data":{"Url":"","Ret":0}} Url为新URL地址 Ret为打开结果
5) IE_ProgressChange 进度条进度通知
{"event":"IE_ProgressChange","data":{"Progress":0,"Max":0}} Progress当前进度 Max进度最大值
6) IE_SetSecureLockIcon 设置安全锁定图标
{"event":"IE_SetSecureLockIcon","data":{"SecureLockIcon":0}}
7) IE_StatusTextChange 状态变化
{"event":"IE_StatusTextChange","data":{"Status":""}} Status状态文字描述
8) IE_TitleChange 标题变化
{"event":"IE_TitleChange","data":{"Title":""}} Title 标题
9) IE_WindowClosing 窗口关闭
{"event":"IE_WindowClosing","data":{"ChildWindow":0}} ChildWindow是否子窗口
10) IE_CommandStateChange 命令状态变化
{"event":"IE_CommandStateChange","data":{"Command":0,"Enable":0}} Command命令ID,Enable是否启用
B、PluginOK支持的事件通知:
1) IE_FullScreen 小程序是否响应了热键全屏
{"event":"IE_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
cd /d %~dp0
WrlSetup.exe /I
\ No newline at end of file
微软Office内嵌网页小程序:基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )开发,底层调用微软Office的VBA接口实现可程序化驱动的网页在线编辑办公控件,可分别将Word、Excel、PowerPoint软件窗口内嵌到网页指定区域运行并操控。最低可用在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、微软Office内嵌网页小程序控制相关接口:
说明:以下功能请通过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的:
<iframe name="OfficeApplet" id="OfficeApplet" src="OfficeApplet3.html" frameborder="0" align="left" width="550" height="540" scrolling="no">
或者直接用
<div id="OfficeApplet" class="OfficeApplet"</div>
另外需要嵌入用到的JS脚本,脚本程序是完全开源的。
1)、请求启动微软Office内嵌网页小程序实现网页中局部加载doc/xls/ppt等文档显示:
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设定的值做修正
OType 1启动微软Word;OType 2启动微软Excel;OType 3启动微软PPT;
Url:加载小程序所在的网页实际地址
Open:为需要打开的文档路径,磁盘目录斜杠用/
注意:Open和Url如果有特殊字符或中文等,需要用URL编码处理后传递
举例:
自动识别当前浏览器并启动微软Word程序
{"req":"Wrl_OfficeApplet","rid":5,"para":{"Type":"0","Title":"Office Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"1","Open":"D:/Zorro/test.doc"}}
自动识别当前浏览器并启动微软Excel程序
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Title":"Office Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"2","Open":"D:/Zorro/test.xls"}}
自动识别当前浏览器并启动微软PPT程序
{"req":"Wrl_OfficeApplet","rid":7,"para":{"Type":"0","Title":"Office Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"3","Open":"D:/Zorro/test.ppt"}}
自动识别当前浏览器指定位置自动适配网页大小启动:
{"req":"Wrl_OfficeApplet","rid":8,"para":{"Type":"0","Title":"Office Applet","Flag":9,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"1","Open":"D:/Zorro/test.doc"}}
当前页指定位置自动适配网页加载测试
http://zorrosoft.com/officeframe.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":"EF720B55-787B-4CBC-AD0A-AE219CFD52C9","Port":950}}
返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如新打开一个网页。
2)、请求控制微软Office内嵌网页小程序:
当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等
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)、请求滚动微软Office内嵌网页小程序:
当前端截取到网页滚动通知时,需要调用此接口实现小程序和网页的滚动联动
ID为启动小程序时返回JSON中的ID值
Code为滚动方向1是水平直,2是垂直,3是同时
Left为横向滚动条位置,Top为纵向滚动条位置
{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}}
4)、请求改变微软Office内嵌网页小程序显示位置或大小:
当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小
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)、请求缩放微软Office内嵌网页小程序,用于浏览器网页按比例缩放,一般不需要处理:
ID为启动小程序时返回JSON中的ID值,Scall为缩放百分比
{"req":"Wrl_AppletScale","rid":7,"para":{"ID":1,"Scale":120}}
3、小程序安装、升级、卸载
1)、请求安装微软Office内嵌网页小程序
请在输入框中,输入如下请求,然后点击发送,完成安装:
{"req":"Plugin_Install","rid":1,"para":{"Name":"微软Office内嵌网页小程序","PID":"EF720B55-787B-4CBC-AD0A-AE219CFD52C9","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的微软Office内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌Word、Excel、PowerPoint等程序进行在线编辑或审阅各类办公文档","DownAddr":"http://local.zorrosoft.com/Files/Plugin/OfficeApplet.pid","MD5":"E3252299F94130E12DC79BA959A6302F","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"676DE1A347AA5718DD7A1170DE9D096CBFED9C9ABB68FD6070AE1CBF81B3B011542F65740C788D4084E634CFD5952E77D52E4C82B9E1CB34A6906FFB5DD0C348FFAC0F466AA8C75D0C88841F4AFDDB2697377DE129CF53262E123505DF5928AC5016FE22AB7CA52341B9708C72C5ECE23000ED968532A18020F82C7AD2C77012EEDE48BC696DFACC167B2ECCEA01E8012783848B8B4CEC71EF96713E77929CAD8BF8D8B875DF62DECABDBC3072E70534B879A7208C52088D95A84D6C9D659C04852CA0039EEE8DDEFC96AF12645ADA73637F286A125C813EC383A3F4A8549BE8681138341D2845768DADA9A7E0B3303FC3D7046562ECD9793F3B11F97D85167D"}}
启动安装后,会不断收到安装进度直到安装结束。
在发布时,也可以把此小程序目录文件和中间件一起打包后发布,不用单独分发。
2)、请求升级微软Office内嵌网页小程序:
{"req":"Plugin_Update","rid":1,"para":{"Name":"微软Office内嵌网页小程序","PID":"EF720B55-787B-4CBC-AD0A-AE219CFD52C9","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的微软Office内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌Word、Excel、PowerPoint等程序进行在线编辑或审阅各类办公文档","DownAddr":"http://local.zorrosoft.com/Files/Plugin/OfficeApplet_Update.pid","MD5":"37D8373EB2F68005B0C3D27938562FE7","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"9D996D3F9910A141E175B1227C57104F327784E6152B6BE0CFC3255E7CE2B7D12A71ECFE5C926905CBD6B448D8A4F4B438FCD7E2E52362EACC6C7863F64BE827942FB7C5432F69E5A6C37CB48AE24EF11D66DBC5CAFD53E2DC94D63F1EBBDF014E3317C60A86F17A5B140077A27B91BBA4F36498E08064BD82676B0AF4947920C5A2CD7C245E5B744A9EA22EDA2FCF30A841CDD2DE3CED387F0BD2A19D10F373D77095F1A922AFC26303FE00EA8EDB4482221C8F7A3E1D42865D14BE0F4C105A43D651555F02F0268716C2952B055C98EB7294AC80B50E780517D920CD13A5D4CE25E396DAA29F189057C8787D572B58BF9150E5AE58C72FA26D7E7E64F03364"}}
以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。
3)、请求卸载微软Office内嵌网页小程序:
{"req":"Plugin_Remove","rid":3,"para":{"PID":"EF720B55-787B-4CBC-AD0A-AE219CFD52C9","Type":8}}
4、微软Office内嵌网页小程序转调用Office软件的VBA接口,先根据Wrl_OfficeApplet请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令:
A、常用功能请求:
请求退出小程序
{"req":"Office_Exit","rid":1,"para":{}}
请求关闭文档
{"req":"Office_Close","rid":2,"para":{}}
请求打开文档
{"req":"Office_Open","rid":3,"para":{"Open":"D:/Zorro/test.doc"}}
5、事件通知:
A、
B、PluginOK支持的事件通知:
1) 小程序是否响应了热键全屏
以下分别为Word字处理、Excel表格、Powerpoint演示程序的全屏事件通知
{"event":"WORD_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记
{"event":"EXCEL_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记
{"event":"PPT_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
文件已添加
文件已添加
{
"FirstInstall":"AIP_Setup.exe",
"PORT": 1200
}
\ No newline at end of file
{
"FirstInstall":"VLCIns.exe",
"COM": "axvlc.dll",
"Caching":300,
"RTSPTCP":0,
"PORT": 930
}
\ No newline at end of file
{
"PORT": 12900
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
{
"FirstInstall":"flashplayer.exe",
"PORT": 990
}
\ No newline at end of file
{
"PORT": 12800
}
\ No newline at end of file
cd /d %~dp0
WrlSetup.exe /U
\ No newline at end of file
微软语音引擎小程序,基于跨浏览器的小程序系统-PluginOK(牛插)中间件(https://github.com/wangzuohuai/WebRunLocal)开发,提供文本朗读等服务。最低可用在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日志文件输出运行情况;
4)、此小程序不能运行在系统服务下,需要修改WrlConfig.json里的NoService为1后安装,如已生成data目录下的此配置文件,需要同步修改。
2、请求安装微软语音引擎小程序:
{"req":"Plugin_Install","rid":1,"para":{"Name":"微软语音引擎小程序","PID":"AE023C55-E408-45DB-BF58-8B11C4E8D945","Date":"2020-12-18","Desc":"PluginOK中间件之上跨浏览器的微软语音引擎小程序,可在Chrome、Edge、Firefox、IE、Opera、360、QQ、搜狗等的浏览器最新版中实现朗读指定文字功能","DownAddr":"http://local.zorrosoft.com/Files/Plugin/WrlSpVoice.pid","MD5":"3A3F91ED95C7EBC8D07F4DA03EA069EE","Version":"2.0.3.11","Size":458752,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"AFE0F076A6C0E2B2F5B1FFA26B18658B4DB1528EBDD3339C68A2BC3A7DC7F93928B68111405DF90505B30F91276145B24241D5651EA18E95FDA7BA2DAE177994C65DAC5605345575556658B4BCE618E3D2800BB25AE5481E493B53428968512E4618C70B854D62EAA184F7D4BF33C4853311E66C5F9D58591894B9CCEEBA49161CEB7917D10081F43C1635A9C6C27B0569AF8EBD2EAEE98E88F6D3988F10062068E8B77BBD602D8F89A16D4141D68785E5E1B2634F51FFE4B6DF426B7A78492BBA85C6FFB0E5BDFA3CB47FA924649C228744DA785AD2F0B2A0FFC0F536953055A89E8D2CE9A0126087152A645404813BE64CED46A00F5C98C1843A42ECFD663F"}}
3、请求更新微软语音引擎小程序:
{"req":"Plugin_Update","rid":1,"para":{"Name":"微软语音引擎小程序","PID":"AE023C55-E408-45DB-BF58-8B11C4E8D945","Date":"2020-12-18","Desc":"PluginOK中间件之上跨浏览器的微软语音引擎小程序,可在Chrome、Edge、Firefox、IE、Opera、360、QQ、搜狗等的浏览器最新版中实现朗读指定文字功能","DownAddr":"http://local.zorrosoft.com/Files/Plugin/WrlSpVoice_Update.pid","MD5":"B1465FD907A366E036956D9A796F1D87","Version":"2.0.3.11","Size":458752,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"850DF6D8CFD0DAA5DCFCE9CD8813B724EF7301BB32B4598BD677B32D2A7BDAD0A435C3E883A47CE68DED21A9E24CD0270A355C604EC54871E37ACC51B2ED1B57E1F69BA07AE0720F89B09BB9885B03E31DCD253B4604D7539B72C031426DC72B5A73B2CA7791D6F3A351DA688E365CD2FB6344F51E48B56748E0403C0E62B5790779BF8247C3984F54C32FF31297BA7AB21E1311B9B5E6273E44465BB1826A0F04D05EE297473E39EC71231691DDBE0039490DD6CDF69BAD24DE78263025F0F7993976D5EB6DFA53A6230D5EB025E4FA48428D5E2D84A0D15D6CD57FB2C6A881E5FAAB28E38ED7DDEE027DC7425D116F8FA6D602F0C540B933C33C4F1E9EC225"}}
以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。
4、连接请求微软语音引擎小程序服务:
说明:以下功能请通过Web Socket连接后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。
HTTP网页在线测试:http://local.zorrosoft.com HTTPS网页在线测试:https://local.zorrosoft.com
打开测试网页,输入地址:ws://localhost?sid=111&pid=5DC63C90-904B-445F-BBE0-5518E741783B&flag=1 点击连接;
支持的协议功能如下:
A、朗读指定文本
Text为朗读内容,也可以是实际的WAV声音文件来播放 Type为朗读类型(1异步,0同步),仅对朗读文字有效,播放WAV是同步方式,指定OutFile参数时代表朗读文字时自动录音保存到wav文件中
{"req":"SAPI_Speak","rid":1,"para":{"Text":"你好","Type":1,"OutFile":"D:/Zorro/test.wav"}}
返回内容 {"ret":0,"rid":1,"data":{"Ret":0}} Ret代表是否成功
B、暂停朗读
{"req":"SAPI_Pause","rid":2,"para":{}}
返回内容 {"ret":0,"rid":2,"data":{"Ret":0}} Ret代表是否成功
C、恢复朗读
{"req":"SAPI_Resume","rid":3,"para":{}}
返回内容 {"ret":0,"rid":3,"data":{"Ret":0}} Ret代表是否成功
D、停止朗读
{"req":"SAPI_Stop","rid":4,"para":{}}
返回内容 {"ret":0,"rid":4,"data":{"Ret":0}} Ret代表是否成功
E、设置朗读音量 范围是 0 - 100
{"req":"SAPI_SetVolume","rid":5,"para":{"Volume":50}}
返回内容 {"ret":0,"rid":5,"data":{"Ret":0}} Ret代表是否成功
F、获取朗读音量
{"req":"SAPI_GetVolume","rid":6,"para":{}}
返回内容 {"ret":0,"rid":6,"data":{"Volume":50}
G、设置朗读速率 范围是 -10 - 10
{"req":"SAPI_SetRate","rid":7,"para":{"Rate":1}}
返回内容 {"ret":0,"rid":7,"data":{"Ret":0}} Ret代表是否成功
H、获取朗读速率
{"req":"SAPI_GetRate","rid":8,"para":{}}
返回内容 {"ret":0,"rid":8,"data":{"Rate":0}}
I、获取当前语言引擎名称
{"req":"SAPI_GetCurToken","rid":9,"para":{}}
返回内容 {"ret":0,"rid":9,"data":{"TokenID":""}}
J、获取所有可用语言引擎名称
{"req":"SAPI_GetAllToken","rid":10,"para":{}}
返回内容 {"ret":0,"rid":10,"data":["TTS_MS_EN-US_ZIRA_11.0","TTS_MS_ZH-CN_HUIHUI_11.0"]}
K、设置当前语言引擎名称
{"req":"SAPI_SetCurToken","rid":11,"para":{"Token":"TTS_MS_EN-US_ZIRA_11.0"}}
返回内容 {"ret":0,"rid":7,"data":{"Ret":0}} Ret代表是否成功
L、指定WAV声音文件,识别为文字
{"req":"SAPI_GetWavText","rid":12,"para":{"File":"D:/Zorro/test.wav"}}
事件返回,可能多个:{"ret":0,"rid":12,"para":{"Text":"你好"}}
5、其它
请求参数的JSON数据包,请确保是UTF-8无签名的编码。
更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.doc”及“PluginOK中间件安全解决方案”。
如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938
\ No newline at end of file
串口通信浏览器小程序,基于跨浏览器的小程序系统-PluginOK(牛插)中间件(https://github.com/wangzuohuai/WebRunLocal)开发,底层实现调用微软串口通讯控件MSComm32.ocx,最低可用在Chrome 41、Firefox 52、Edge 80(Chromium内核)、360极速/安全、IE 8、Oprea 36、QQ、搜狗等浏览器,也兼容运行于这些浏览器的最新版本。通过此小程序,可以在浏览器中通过JS非常方便的操作COMM串口打印机、GSM 猫、手机、扫描枪、屏显、钱箱等设备。小程序中涉及到的属性等含义,请直接参考 微软串口通讯控件MSComm32.ocx中的定义,也可以参考这里:https://blog.csdn.net/shenziheng1/article/details/52884444
以下是体验小程序步骤:
1、PluginOK(牛插)中间件的安装:
1)、如果是exe的安装程序,请直接运行安装;
2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装;
3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有WrlService.txt日志文件输出运行情况。
2、请求安装串口通信小程序,在测试页面上输入 ws://localhost?sid=123&flag=1 先连接上中间件服务,然后输入一下内容点击发送:
{"req":"Plugin_Install","rid":1,"para":{"Name":"串口通信浏览器小程序","PID":"C0B01CD6-7DD9-4D3C-B668-04168D5236FC","Date":"2020-12-12","Desc":"PluginOK中间件之上跨浏览器的串口通信小程序,可在Chrome、Edge、Firefox、IE、Opera、360、QQ等的浏览器最新版中调用","DownAddr":"http://local.zorrosoft.com/Files/Plugin/WrlComm.pid","MD5":"628817FE6A190CBCC538974CA5EC6B00","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"55E06F607D655FE105E9D99AD2ABD9CBACEDBAD3EF6A1454A6F81F70A539AF46846132E917D6E96B552D63DE6D677169848384532BB375AB15F15E3D6941A94291CEA2038951304CAB2FC6FC00E686E4E63E2685B3D568907FDBBFA36F3B33BB5F31D01F1708053A1958E22CDBCAB432EBA4A086F1CA7C46765FF789992FAA9AB00BD1F1BF1D60CB230AD8893D21D355E91E7364A76CEEC47FD9F78D8F9813563090855291544DD5CC413C9045B66C9AE34D92974DF3A8763365CDC64DDC3A5C6002EB288D745C28093F638617BC3C5048750B329CAB292BEA3445D485D4898A75E18EE6BAC14946F6172915922AEC93CE638BBA114CBA15CEE0ABD8661A5738"}}
3、请求串口通信小程序更新:
{"req":"Plugin_Update","rid":1,"para":{"Name":"串口通信浏览器小程序","PID":"C0B01CD6-7DD9-4D3C-B668-04168D5236FC","Date":"2020-12-12","Desc":"PluginOK中间件之上跨浏览器的串口通信小程序,可在Chrome、Edge、Firefox、IE、Opera、360、QQ等的浏览器最新版中调用","DownAddr":"http://local.zorrosoft.com/Files/Plugin/WrlComm_Update.pid","MD5":"6F24CD5141249F50A5A5E98414901BD5","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"72606452D9D9E4B5B8DE3162A7634F88DF63E615EC1B6DD2709913215B73A7900B672EC2DE44E4F65757B2A6B86C121AC0D0A8E3B2EC1ADE4C4DE09EDAAAF59CD3B66BEA1ED4EAEADC1BBA54ACDA538E363770AF1E39538CABBFCBD76D27517DBA15C78BB73B6F415E308DE5410B8A94C948B4AC23573DE51AF2C7CF0AE73135E5DE8F200DA8947049569048C89E9AE79AEDCF4A4270E024837581B0DDCAEDEC6CD849621DEA55A4989E587F14A7248E2495F307A15A525A2527C2BFD9C9FBCA9F15102CB72B54561DEBEED251A863D6FE2082CFCD5F29F8755D2ABEF2A4A1045A66703A106A1E5A631B54AADEEF6BDE8BF12A2BF686468025EFD531BF7C2F4F"}}
以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。
4、连接请求串口通讯小程序服务:
说明:以下功能请通过Web Socket连接后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。
打开测试网页,输入地址:ws://wrl.zorrosoft.com?sid=668&pid=407F58DA-67A5-4C74-B9F9-44A02A20B205&flag=1 点击连接;
支持的协议功能如下:
A、获取参数
{"req":"SP_Get","rid":1,"para":{"Items":["EventFlag","Base64","CDHolding","CDTimeout","CommID","CommPort","CTSHolding","CTSTimeout","DSRHolding","DSRTimeout","DTREnable","Handshaking","InBufferSize","InBufferCount","Break","InputLen","Interval","NullDiscard","OutBufferSize","OutBufferCount","ParityReplace","PortOpen","RThreshold","RTSEnable","Settings","SThreshold","Output","Input","CommEvent","EOFEnable","InputMode"]}}
获取指定名称的参数值,可批量获取,也可以获取单个。其中EventFlag默认0,为1时采用事件驱动模式,收到内容自动通知到前端(SP_Event事件),Base64指定通讯内容是否经过Base64编码后传输,默认0,如果通讯内容是二进制推荐设置为1,Output和Input内容如果Base64设置为1表示是Base64编码后的结果,原通讯控件中布尔值规则1为真,0为假。其它参数都是串口通讯的属性。
返回内容格式如下:
{"ret":0,"rid":1,"data":{"EventFlag":0,"Base64":0,"CDHolding":0,"CDTimeout":0,"CommID":-1,"CommPort":1,"CTSHolding":0,"CTSTimeout":0,"DSRHolding":0,"DSRTimeout":0,"DTREnable":0,"Handshaking":0,"InBufferSize":1024,"InBufferCount":0,"Break":0,"InputLen":0,"Interval":1000,"NullDiscard":0,"OutBufferSize":1024,"OutBufferCount":0,"OutBufferCount":"?","PortOpen":0,"RThreshold":0,"RTSEnable":0,"Settings":"9600,n,8,1","SThreshold":0,"Output":"","Input":"","CommEvent":-4083,"EOFEnable":0,"InputMode":0}}
请求Items中的每个名称都对应自己名称的值
简单举例1,获取当前操作的COM端口、波特率及是否打开:{"req":"SP_Get","rid":2,"para":{"Items":["PortOpen","CommPort","Settings"]}}
{"ret":0,"rid":2,"data":{"PortOpen":1,"CommPort":1,"Settings":"9600,n,8,1"}} 代表当前打开了COM1端口,使用的波特率是9600,n,8,1
简单举例2,获取端口收到的内容:{"req":"SP_Get","rid":3,"para":{"Items":["Output"]}}
{"ret":0,"rid":3,"data":{"Output":"OK"}} 代表当前端口收到内容OK
B、设置参数
{"req":"SP_Put","rid":6,"para":{"CommPort":1,"CDTimeout":0,"CTSTimeout":0,"DSRTimeout":0,"DTREnable":0,"Handshaking":0,"InBufferCount":0,"Break":0,"Interval":1000,"NullDiscard":0,"OutBufferCount":0,"OutBufferCount":"?","RThreshold":0,"RTSEnable":0,"SThreshold":0,"CommEvent":0,"EOFEnable":0}}
设置指定名称的参数值,规则和获取参数类似。
返回内容格式如下:
{"ret":0,"rid":6,"data":{"CommPort":1,"CDTimeout":1,"CTSTimeout":1,"DSRTimeout":1,"DTREnable":1,"Handshaking":1,"InBufferCount":1,"Break":1,"Interval":1,"OutBufferCount":1,"RThreshold":1,"RTSEnable":1,"SThreshold":1,"CommEvent":0,"EOFEnable":1}}
每个设置结果,在对应的结果中,1成功,0失败
C、指定参数打开端口
EventFlag为1时收到内容自动通知到前端(SP_Event事件)
Base64 接收和发送的内容是否经过Base64编码
CommPort 指定打开的端口序号
Settings 设置波特率等参数如:115200,n,8,1
InBufferSize OutBufferSize 读写缓冲区大小都是1024,
InputLen 设置当前接收区数据长度为0,表示全部读取
InputMode 串口接收数据的模式 0文本,1二进制内容
RThreshold 接收缓冲区有1个以及1个以上字符时,将引发接收数据的OnComm事件
协议举例:
{"req":"SP_Open","rid":15,"para":{"EventFlag":0,"Base64":0,"CommPort":2,"Settings":"115200,n,8,1","InBufferSize":1024,"OutBufferSize":1024,"InputLen":0,"InputMode":0,"RThreshold":16}}
{"ret":0,"rid":19,"data":{"Ret":1,"Code":0}} Ret为1代表打开成功,Code为错误时错误码
D、读取端口数据
{"req":"SP_Read","rid":18,"para":{}}
如果Base64设置为1,Content为Base64编码后的内容
{"ret":0,"rid":18,"data":{"Content":"OK"}} 取到Content内容为OK
E、写数据端口
如果Base64设置为1,则Content必须是经过Base64编码后的内容(用于二进制流) 写端口:
{"req":"SP_Write","rid":19,"para":{"Content":"AT"}}
{"ret":0,"rid":19,"data":{"Ret":1,"Code":0}} Ret为1代表关闭成功,Code为错误时错误码
F、关闭端口协议:
{"req":"SP_Close","rid":20,"para":{}}
请求返回:
{"ret":0,"rid":20,"data":{"Ret":1,"Code":0}} Ret为1代表关闭成功,Code为错误时错误码
5、事件通知
5.1 收到内容通知
{"event":"SP_Rec","data":{"Content":""}} 如果Base64为1,内容Content里是Base64编码后的结果,实际使用时请用Base64编码还原内容
5.2 发送内容通知
{"event":"SP_Send","data":{"Content":""}} 如果Base64为1,内容Content里是Base64编码后的结果,实际使用时请用Base64编码还原内容
5.3 通讯事件通知
{"event":"SP_Event","data":{"ID":""}} "ID为事件类型 1发送事件、3 clear-to-send 线变化、4 data-set ready 线变化、5 carrier detect 线变化、6 振铃检测、7 文件结束
5.3 错误事件通知
{"event":"SSP_Error","data":{"ID":""}} "ID为错误类型:
comInvalidPropertyValue = 380,无效属性值
comSetNotSupported = 383,属性为只读
comGetNotSupported = 394,属性为只写
comPortOpen = 8000,端口打开时操作不合法
8001 超时值必须大于 0
comPortInvalid = 8002,无效端口号
8003 属性只在运行时有效
8004 属性在运行时为只读
comPortAlreadyOpen = 8005,端口已经打开
8006 设备标识符无效或不支持该标识符
8007 不支持设备的波特率
8008 指定的字节大小无效
8009 缺省参数错误
8010 硬件不可用(被其它设备锁定)
8011 函数不能分配队列
comNoOpen = 8012,设备没有打开
8013 设备已经打开
8014 不能使用通信通知
comSetCommStateFailed = 8015,不能设置端口状态
8016 不能设置 comm 事件屏蔽
comPortNotOpen = 8018,仅当端口打开时操作才有效
8019 设备忙
comReadError = 8020,读端口设备错误
comDCBError = 8021,为该端口检索设备控制块时的内部错误
comBreak = 1001,接收到中断信号
comCTSTO = 1002, Clear-to-send 超时
comDSRTO = 1003,Data-set ready 超时
comFrame = 1004,帧错误
comOverrun = 1006,端口超速
comCDTO = 1007,Carrier detect 超时
comRxOver = 1008,接收缓冲区溢出
comRxParity = 1009,Parity 错误
comTxFull = 1010,传输缓冲区满
comDCB = 1011检索端口 设备控制块 (DCB) 时的意外错误
6、其它
请求参数的JSON数据包,请确保是UTF-8无签名的编码。
更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.doc”及“PluginOK中间件安全解决方案”。
如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938
\ No newline at end of file
cd /d %~dp0
WrlSetup.exe /S
\ No newline at end of file
PluginOK(牛插)中间件-跨浏览器的小程序系统标准版功能测试:
1、请在 http://local.zorrosoft.com 下载中间件安装包(http://local.zorrosoft.com/Files/PluginOK.zip)后执行安装,或下载绿色版程序包(http://zorrosoft.com/Files/WRL.zip)并解压到实际的某个空的磁盘目录(切记别解压到磁盘的根目录,避免卸载时删除了无关文件),找到批处理文件InstallWrl.bat选中后右键管理员权限运行,安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有WrlService.txt日志文件输出运行情况;
2、启动Chrome等浏览器并打开网页 http://local.zorrosoft.com 进行测试(HTTPS网站测试请打开 https://local.zorrosoft.com ,HTTPS网站请把连接的通讯协议 ws: 改为 wss: 再执行),如在IE等浏览器中测试,如提示启用ActiveX控件,请选择是;
3、测试连接PluginOK(牛插)系统服务,下面是参数说明:
sid是唯一连接标识(小程序服务支持同时多个连接,需要用唯一标识进行区分)
pid是连接小程序的唯一标识(在小程序配置文件PluginConfig.json中定义的PID值),不传时表示连接主服务
flag是连接控制掩码,1指定输出调试日志,2指示通讯数据进行GZip压缩(网页JS需要进行同步处理),3代表1+2,4用管理员权限启动(仅限于启动弹窗或内嵌窗口小程序) 8指定同步处理请求。
请求连接PluginOK(牛插)主服务:ws://wrl.zorrosoft.com?sid=123&flag=1 点击连接按钮会输出连接结果,在HTTP网页中,wrl.zorrosoft.com可替换为localhost进行连接,如果您的电脑80端口已经被占用,服务侦听端口会自动切换为81,那么连接地址请修改为:ws://wrl.zorrosoft.com:81?sid=123&flag=1;
连接PluginOK(牛插)主服务后支持的功能协议:
1)、获取或对比版本信息:
Mac为1时获取本机Mac地址信息,More取更多信息(当前登录用户、键盘和鼠标空闲时间、当前电脑制造商及型号等),Router为1时获取当前网络路由器MAC地址,Config为1时获取中间件的一些配置参数。
说明:连接主服务后可执行,返回当前软件版本、当前系统版本、唯一标识、授权有效期、授权客户名称、当前系统启动后运行时间、程序运行路径等;
获取版本信息举例:
{"req":"Wrl_Version","rid":1,"para":{"Mac" : 1,"More" : 0,"Config" : 1,"Router" : 1}}
返回:{"ret":0,"rid":1,"req":"Wrl_Version","data":{"Version":"1.2.18.1","ValidDay":"2020-12-31","AuthName":"成都佐罗软件","Type":8,"OS":"10.0.18363.2","Win64":1,"UniID":"C69C5505AD73EFDD7A6BA38D83665889","Time":8103544,"TickCount":17184796,"Adv":1,"RunPath":"D:/Zorro/WRL/","Mac":[{"Card":"802.11n USB Wireless LAN Card","Mac":"38:B84:9E:2F:38:6A"}],"Router":["90:6F:AB:8F:BB:58"],"Config":{"NoService":0,"Localhost":1,"Delay":1,"Monitor":60,"Mac":1,"UDisk":0,"Lang":"CHS"}}}
对比是否有新版本举例:
{"req":"Wrl_Version","rid":1,"para":{"Version" : "1.0.1.1"}} 给定新版本号,判断当前中间件版本是否需要升级,返回节点字段Update为1时需要升级,0不需要升级
{"req":"Wrl_Version","rid":1,"para":{"PID" : "F90B1CF0-8485-40ec-B4E8-B87598AAB35D","Version" : "1.0.1.1"}} 指定PID的小程序新版本号,判断小程序是否需要升级,返回节点字段Update为1时需要升级,0不需要升级,2代表小程序还未安装
2)、指定浏览器打开指定Url:
分别指定浏览器类型Type(1代表IE 2代表Chrome 4代表Firefox 8代表Opera 16代表Edge(Chromium内核) 32代表360急速浏览器 33代表360安全浏览器 34代表360企业安全浏览器 50代表QQ浏览器 60代表搜狗浏览器)和Url地址;
Flag意义:0代表标签页打开,1代表新窗口打开(360等不支持);
Show显示窗口类型,默认1正常显示,2最小化显示 3最大化显示。
此功能主要用于强制IE打开指定网页,Chrome命令行加载PPAPI插件等使用;
举例1:
强制用IE9兼容模式内核浏览器打开 http://www.zorrosoft.com
9999是IE9标准模式 8888是IE8标准模式 8000是IE8兼容模式 7000是IE7 详细定义参考:https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330730(v=vs.85)?redirectedfrom=MSDN#browser_emulation
{"req":"Wrl_OpenUrl","rid":2,"para":{"Type":"1","Url": "http://www.zorrosoft.com","Flag":"1","Version":"9000"}}
举例2:
Chrome浏览器新窗口打开http://www.zorrosoft.com Flag为1新窗口打开,否则是新标签打开
{"req":"Wrl_OpenUrl","rid":3,"para":{"Type":"2","Url": "http://www.zorrosoft.com","Flag":"0"}}
举例3:
重启Chrome命令行加载PPAPI插件,插件路径如有空格的情况,空格要用%20代替,路径单斜杠用双斜杠
{"req":"Wrl_OpenUrl","rid":4,"para":{"Type":"2","Url": "--register-pepper-plugins=\"C:\\Program%20Files%20(x86)\\ChromePlugin\\ChromePlugin.dll;application/my-plugin\" --disable-infobars --disable-hang-monitor --flag-switches-begin --enable-nacl --ignore-gpu-blacklist --flag-switches-end http://www.zorrosoft.com"}}
举例4,请求FireFox浏览器打开指定URL:
{"req":"Wrl_OpenUrl","rid":5,"para":{"Type":"4","Url": "http://www.zorrosoft.com"}}
举例5,请求360极速浏览器打开指定URL:
{"req":"Wrl_OpenUrl","rid":6,"para":{"Type":"32","Url": "http://www.zorrosoft.com"}}
举例6,请求360安全浏览器打开指定URL:
{"req":"Wrl_OpenUrl","rid":7,"para":{"Type":"33","Url": "http://www.zorrosoft.com"}}
举例7,请求Edge新内核浏览器打开指定URL:
{"req":"Wrl_OpenUrl","rid":8,"para":{"Type":"16","Url": "http://www.zorrosoft.com"}}
3)、请求使用关联程序打开指定文件:
指定本地文件全路径,使用本地电脑默认关联的程序打开,路径用反斜杠或双斜杠。
为安全起见,这些扩展名文件不支持:*.exe *.msi *.js *.jar *.inf *.com *.bat *.vbs *.py
举例:
{"req":"Wrl_OpenFile","rid":9,"para":{"File" : "D:/Zorro/Ver/TestWrl.txt"}}
说明:连接主服务后可执行;
4)、单选(多选)磁盘文件/设置文件保存位置:
可指定选择文件对话框标题、筛选文件类型、最大可选文件数量、初始化路径等参数。
Type 操作方式 0代表选择文件 1代表设置文件保存路径
Single 是否单选 选择文件时有效
Ext 文件类型,默认为 图像文件(*.jpg;*.gif;*.bmp;*.png;*.tif)\r*.jpg;*.gif;*.bmp;*.png;*.tif;*.jpeg\r所有文件(*.*)\r*.*
Title 对话框标题,默认为 请选择文件
Name 文件保存默认名称 选择文件时无效
BtnText 按钮文字 设置文件保存位置时无效
Path 初始化显示路径,默认为 当前用户文档目录
举例:
选择文件
{"req":"Wrl_SelectFile","rid":10,"para":{"Type" : 0,"Single" : 1,"Title" : "单选文件","BtnText" : "确定(&O)","Ext" : "所有文件(*.*)\r*.*","Path" : "E:/WRL/"}}
设置文件保存位置
{"req":"Wrl_SelectFile","rid":11,"para":{"Type" : 1,"Title" : "请选择文件保存位置","Ext" : "文本文件(*.txt)\r*.txt","Path" : "E:/WRL/","Name" : "测试"}}
说明:连接主服务后可执行,由于此请求有对话框阻塞行为,执行后的结果通过事件推送方式返回,定义如下:
{"event":"Wrl_SelectFile","rid":12,"data":[{"File":"E:/WRL/测试.txt"}]}
取消时推送:{"event":"Wrl_SelectFile","rid":12,"err":"被取消"}
5)、选择目录:
可指定对话框标题等参数。
Title 对话框标题,默认为 请选择文件
BtnText 按钮文字 设置文件保存位置时无效
举例:
{"req":"Wrl_SelectFolder","rid":13,"para":{"Title" : "选择本地目录","BtnText" : "确定(&O)"}}
说明:连接主服务后可执行,由于此请求有对话框阻塞行为,执行后的结果通过事件推送方式返回,定义如下:
{"event":"Wrl_SelectFolder","rid":13,"data":[{"Folder":"E:/WRL/"}]}
取消时推送:{"event":"Wrl_SelectFolder","rid":6,"err":"被取消"}
6)、请求获取指定文件大小、版本、文件属性、MD5、创建时间、修改时间等信息:
指定本地文件全路径,路径用反斜杠或双斜杠,如果是图片文件,还会返回高度和宽度信息。
举例:
{"req":"Wrl_GetFileInfo","rid":14,"para":{"File" : "D:/Zorro/WebRunLocal/Bin/Test/css/top.png"}}
说明:连接主服务后可执行;
7)、请求重新注册中间件或小程序:
如指定PID代表重新注册指定的小程序,否则执行重新执行中间件安装批处理(连接会断开),可能因为一些工具或手工误删除了注册表等,用于修复本中间件使用配置。如用于重新配置中间件正式版需要添加TK校验,具体规则请参考SDK包中文档“PluginOK中间件安全解决方案.doc”,可在SDK包中的打包程序WrlPackage.exe的中间件维护生成带TK的请求。
举例:
{"req":"Wrl_RegCom","rid":15,"para":{"PID" : "A22E18F1-95F8-4FDB-99D2-188E5FB12B23"}} 重新注册小程序
{"req":"Wrl_RegCom","rid":15,"para":{"NoService" : "1"}} 以非系统服务方式重新安装中间件
说明:连接主服务后可执行;
8)、请求当前浏览器类型和版本等信息:
举例:
{"req":"Wrl_BrowserInfo","rid":16,"para":{}}
说明:连接主服务后可执行;
返回:{"ret":0,"rid":16,"data":{"Type":2,"PID":6324,"Ver":"83.0.4103.61"}}
Type为浏览器类型 PID为当前进程ID Ver为版本
9)、列出当前已授权的小程序列表:
举例:{"req":"Plugin_Authed","rid":17,"para":{}}
说明:连接主服务后可执行,可获取当前已授权所有小程序列表;
10)、列出已安装所有小程序:
举例:{"req":"Plugin_List","rid":18,"para":{"Detail" : 0}}
说明:连接主服务后可执行,可获取当前已安装所有小程序信息,Detail为1时返回小程序程序全路径;
11)、判断某个小程序是否已存在
举例:{"req":"Plugin_Exist","rid":19,"para":{"PID" : "F90B1CF0-8485-40ec-B4E8-B87598AAB35D"}}
说明:连接主服务后可执行,PID为小程序唯一标识;
12)、请求重新加载指定小程序
使用场景:不用重启服务即可扫描新增小程序使用;或小程序调试时,程序及配置更新需要重新加载时
举例:{"req":"Plugin_Refresh","rid":20,"para":{"PID" : "F90B1CF0-8485-40ec-B4E8-B87598AAB35D"}}
说明:连接主服务后可执行,PID为小程序唯一标识;
13)、前端请求配置参数。
举例:{"req":"Wrl_Config","rid":21,"para":{"Monitor" : "30"}}
Monitor配置服务无响应超时时间,一旦超过服务会自动重启
说明:连接主服务后可执行;
14)、前端请求启动中间件,网页中点击以下链接,可启动中间件主程序。
<a href="PluginOK://DeskRun">点击这里启动PluginOK单机版</a>
15)、安装范例小程序
请在输入框中,分别输入如下请求,然后点击发送,完成四个范例小程序的安装:
{"req":"Plugin_Install","rid":1,"para":{"Name":"无窗小程序范例(C++语言)","PID":"A22E18F1-95F8-4FDB-99D2-188E5FB12B23","Date":"2020-12-12","Desc":"无窗小程序(C++语言)-读写TXT记事本及获取当前系统信息","DownAddr":"http://local.zorrosoft.com/Files/Plugin/PluginComDll.pid","MD5":"98CAA0FA72B0C356C7C0F6C68A84227E","Version":"2.0.2.2","Size":557056,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"568DAB839A796403A09F038324FC9467B37652029726396487C1F893F726346664724F3FBB59B349F66BCA4BB4BAA314C8742E643890E7561D7848A93FBB09CB8C5738210AB6FFB19A0AEC74B7E6184C58633FF71F8C0CEEF2820FC24B9DB8EDAAB9C166C40F09C5B9498945FF0E53AC37F1EC4B4F9D8BF32259C3A22CA48F2C1CBFA49B811EBCB365E8813D092846F2432381CCE79EA3FF4C697E557043E9029C5643DE0E857F6E712B9DBD3ABDA52EC56A9A531DC4A76EFC7CE3074EB3E8D271AD6FE021F5B74EBECA172CCA73A8FBC096A52F70F8B292E7972E0E560D7B4A7903287ED0E621194FBF9B71AA0951DBB9A1556C40223E4FD38E6680B246643B"}}
{"req":"Plugin_Install","rid":1,"para":{"Name":"弹窗小程序范例(C++语言)","PID":"F90B1CF0-8485-40ec-B4E8-B87598AAB35D","Date":"2020-12-12","Desc":"弹窗小程序(C++语言)-演示脚本请求打开指定网站","DownAddr":"http://local.zorrosoft.com/Files/Plugin/PluginWinExe.pid","MD5":"7A61782DBD534989E0369BA824A998D2","Version":"2.0.2.2","Size":622592,"HideIns":0,"Type":2,"Cookie":"","Auth":"","TK":"0874F28C879B95DC60A11EFA79D5EF240076279FAE2A8FDF79E4828D6A9A661DD5E59AAC1F23A43778F1B9EAFF19AF514A3F214A1F1C58E5BBFA6181764F20AB3A99C874D191E1348C3DE6551BF1DA91F92A48BC5D09F49976721948FEE298B9B72B746D296897D2B3A786BC77C612354F202246C486014540F755FE4C19AD3B130109A9A3FAD895E7D2D2406F387B4AB137641DF77E19FABC46F0DD17A00941B21E93310BE3EEB8D7BF275D11A13E3C217118F83808B22E7B0A0D367611C2C28B7380340F7455540A3BFC97EE7F5DDF8CD6552D4606F091777996F1DE94BF5F79B063A1EA8E0F728A96FFF4950BEE992C34DDDE496476B4DF599843BA008265"}}
{"req":"Plugin_Install","rid":1,"para":{"Name":"无窗小程序范例(C#语言)","PID":"D10495F4-DF0F-44FA-8647-91275347214A","Date":"2020-12-12","Desc":"无窗口小程序范例(C#语言)","DownAddr":"http://local.zorrosoft.com/Files/Plugin/PluginNetDll.pid","MD5":"5C024CB3CA771E447D7EC9341DA40942","Version":"2.0.2.2","Size":393216,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"C7AD45007BA9BDE60E2E5BDEE4D1261EEA07A3CFE62F0E03ED10817CA9A11974BC247BDC1C0FA45D9605B713102015B73EE376F06D487649564C9A7D9B18D46CED42CBBCB0D76FFEF5B4566E737E69887D60FD65890BD64D0798A342E99FDD4448034E620184DC5359467054A767B7D76015C26D81CC50C8E891B920DCDA5C49044B906874CF60F2701D589F3AFCEAD0CE1825512F40250C50E9F01357F7A4DC6CBC1959BCFDC637AFC9CDDC966399D53864A383877744C66ABEFDA85EF92891DF48E25B26947CA7649304C5983576BC0FA24EBD7CDBD2C77E0AED93B31855753B2A502F43BE60107E8FE542DB51E85F90F14400DB7390F980459E899FD5BBA1"}}
{"req":"Plugin_Install","rid":1,"para":{"Name":"弹窗小程序范例(C#语言)","PID":"99225C6D-B7A3-441c-AEFB-3EE23ACA2209","Date":"2020-12-12","Desc":"弹窗小程序范例(C#语言)-演示脚本请求打开指定网站","DownAddr":"http://local.zorrosoft.com/Files/Plugin/PluginExeDemo.pid","MD5":"D01DC85F5681B0C74E9AB9537E59A48A","Version":"2.0.2.2","Size":655360,"HideIns":0,"Type":2,"Cookie":"","Auth":"","TK":"0D9101235C349E7737E98F47345E8C555187CFCADABE4D5C66B2303376BAC8FF8E36B3B45DC3767FB61FBF50C54429FA59B91546C4DA91C5120B1DC1BC772A85CA1587C35EA055912A860354BC971DF7768E56CDDF573A3EB30E624612324BE03FC3AA8D01A6E675CDB066889812AA9F1BC971497ECD30D44D3974E46404F31707D5B7EB58D734F1ECEEE00447C3FE7678850690AE449D965453E3E63EEA594A6EEF308C23096ED2BAEB741396FCF935A3F8B4AAD25CD4F9F05F9F57BAC3449F8BBB78779F6F7B13038F1A4EF6E84EBDB9827F1E12A8C97A79A896E9A8B68ED6A203F33019B7BF055CDB6148DEBFF9CF760B03F916FFE6666FDC36E95CB1C4B3"}}
16)、范例小程序升级请求:
{"req":"Plugin_Update","rid":1,"para":{"Name":"无窗小程序范例(C++语言)","PID":"A22E18F1-95F8-4FDB-99D2-188E5FB12B23","Date":"2020-12-12","Desc":"无窗小程序(C++语言)-读写TXT记事本及获取当前系统信息","DownAddr":"http://local.zorrosoft.com/Files/Plugin/PluginComDll_Update.pid","MD5":"2B8FD749A63AD26068121882BEB35189","Version":"2.0.2.2","Size":557056,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"ACE8D9C15BCA3DBF96DF670F0A60A345F96829FFCB5A07D232FFFD60084A454E338D7D2782742239D1A07877FEDD665993910A29CDB0795AD1EAE57673BAB51CD8DB99A23B9BEF77159307C59ED3429921291A0E489C5C29297890A3AAB70936E36961F7EFEC1DAB8B5E1DA80107F68DBE61CA62E068DBA2985313392688F94B2AE3AA4E0C4EBB5F359B934BC3E71C43CF9CC96B38BFD45D6C0F93941714FE103C74377767D9B2924150CC0F45E3148EE5C5E56D17F723364BEC4919AADA45AB70400C6E7AACC1086C8FA2DFA890ADBF69E57A88508D08B81051D1C2D537899CB95328640F69D6277902B4BEEBD96AB0F4089EE1C5AF3AC7A4129E24D9B195C7"}}
{"req":"Plugin_Update","rid":1,"para":{"Name":"弹窗小程序范例(C++语言)","PID":"F90B1CF0-8485-40ec-B4E8-B87598AAB35D","Date":"2020-12-12","Desc":"弹窗小程序(C++语言)-演示脚本请求打开指定网站","DownAddr":"http://local.zorrosoft.com/Files/Plugin/PluginWinExe_Update.pid","MD5":"2B5B73D9BC7B35122FCF605B7DF12FDF","Version":"2.0.2.2","Size":622592,"HideIns":0,"Type":2,"Cookie":"","Auth":"","TK":"8C54C557248CA24C632D5F8388DAD6FC9D0EA97F1DEABA157603C24E1F3A52B7926B1B04BB26A7E9DD0DA89405D01C018B2673083D206062A6E605163A917FE07D07363D5A56055809369D7102522C0E058B86DDFD2E0FE767FD2F903EB4CB570C040BF9272F410081B97FDDD00399F7175652068CD76954740DA265F28FF441AC7B89C562916009AFB3925B32E6217B02DFA334DEFCC3D6F9DDDE249AE31DED2DFD320E1D4F53F58CCB0B7186528C3FB4462018FBED74AEF40D07DC4742EB65C0394B4631225D28C0075D79B7E42A8E41B081ED03E8E66165FA908E564241B67BEF16A3EABC6BFA3294093F95507E0D9910E68B0E95DAB5966DE1077386874F"}}
{"req":"Plugin_Update","rid":1,"para":{"Name":"无窗小程序范例(C#语言)","PID":"D10495F4-DF0F-44FA-8647-91275347214A","Date":"2020-12-12","Desc":"无窗口小程序范例(C#语言)","DownAddr":"http://local.zorrosoft.com/Files/Plugin/PluginNetDll_Update.pid","MD5":"608BD7FAB9B13D4D0AD2499F40120E98","Version":"2.0.2.2","Size":393216,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"5CF70EA228AA4EFDB8F4AB93E15A25FC8F071F83E45892F948CD02D25204784C0A145A9A2BE5AF8AE052656DCAA3DE36F72898679587EB392B100CA1AE71F2295566D63A8C623CDDDC32AD51AA4398A2FF45D80B5AC1C7169D93FCBEBA23B5F85C93E26EC156C7AC423D85221DDBBA64143802356AA9F86E6F692C78058F5BB00378C3E9CD97E92314D004D0FC44D8A2AFE7543A0DD2B40277707FEF83DC2D96741816D1731BA1638AF189DDDE48F455DCC9FA6D76D9A1B4E270E3B66291C58C9709A3B502EC54DD44B9C16F129B1DEBFF2623FB27E8DB0F63BF1DB6B3F1521B399A790ECF8D6FE482481009F73D765A45A364C781139C039BA7FA1B5B3E549D"}}
{"req":"Plugin_Update","rid":1,"para":{"Name":"弹窗小程序范例(C#语言)","PID":"99225C6D-B7A3-441c-AEFB-3EE23ACA2209","Date":"2020-12-12","Desc":"弹窗小程序范例(C#语言)-演示脚本请求打开指定网站","DownAddr":"http://local.zorrosoft.com/Files/Plugin/PluginExeDemo_Update.pid","MD5":"FB84C108071CCAE5EC95D1A4DE6D7F8E","Version":"2.0.2.2","Size":655360,"HideIns":0,"Type":2,"Cookie":"","Auth":"","TK":"302125DD6AFA99A32EC651415816E2EF3811174B140C2CEC7A899D61BD1277786733B1D84C38E3BC8D04345E591BAC028925A21E99C97FE168A57C746F4E81017D1224E7A4B173C78A50567D249C21183D8BC37BC3E6B8A78550535D23E38C2B79126CE69759E8CB5DDA8AD23975BF78BA274B9E3A9088AC762665B59E8BA2E8C08C593CA42E6DF5DC58DF236D32C95E8B318AC87079AC2C903B4813BE64AC83BC473E97E7366D20350FC11E5D103F875AB56210D7CE0F32BBD72ACFE4251EEC54651098B46AE54A22E3CB021FB35FCEB14B372DDE0317D05CE2D5BC490504C00839EEC5D8B9B6EF42945A1F1C00FFAED055AE47D812577D7AF59D304742963E"}}
17)、卸载小程序:
举例:
{"req":"Plugin_Remove","rid":50,"para":{"PID":"99225C6D-B7A3-441c-AEFB-3EE23ACA2209","Type":2}}
{"req":"Plugin_Remove","rid":51,"para":{"PID":"F90B1CF0-8485-40ec-B4E8-B87598AAB35D","Type":2}}
{"req":"Plugin_Remove","rid":52,"para":{"PID":"A22E18F1-95F8-4FDB-99D2-188E5FB12B23","Type":1}}
{"req":"Plugin_Remove","rid":53,"para":{"PID":"D10495F4-DF0F-44FA-8647-91275347214A","Type":1}}
18)、前端请求卸载中间件:
正式版需要添加TK校验,具体规则请参考SDK包中文档“PluginOK中间件安全解决方案.doc”,可在SDK包中的打包程序WrlPackage.exe的中间件维护生成带TK的请求。
举例:
{"req":"Wrl_Remove","rid":22,"para":{}}
说明:连接主服务后可执行;
4、PluginOK(牛插)中间件升级:
1)、升级中间件程序请求:
{"req":"Wrl_Update","rid":1,"para":{"Name":"PluginOK升级包","Date":"2020-12-12","Desc":"1、实现在浏览器网页中内嵌窗口小程序运行,支持同时加载多个运行,支持上下左右滚动小程序;2、实现在Chrome、Firefox、Edge、Opera、IE、360、QQ等浏览器网页可加载IE指定版本内核的控件小程序或标签小程序运行;3、发布在主流浏览器中可运行的Autodesk网页内嵌小程序...","DownAddr":"http://local.zorrosoft.com/Files/Update/Wrl_Update.pid","MD5":"4085FCAA77D62BF81D353B67B7DE887D","Version":"1.2.18.6","Size":11862016,"HideIns":0,"Cookie":"","Auth":"","TK":"9C09E160B9FDAA7C7DF4A656D262B2581ADCBB30E89DC6D9C9FBC0210AB77D5BB3028FDA4DCD4CC1844CAAAFF0A43797B882E13FD8E7EDE50AC9B05C8499C5617CEBDD525CB8FE14BA59455398CA1BB38091A0F4AB6D034592C314D68C4DF5008FA67BB5284AF79441063592F00D45AF7C0C101200C950FFF6F3CD55BC40ADA5C1C043C1402FD170A6B806CABEC9A518722E9EF19576F34B57ACDEF635BC367AD011143D935B6B73928FA7379E1DEB05F4317B16725E8AB415DCB8D72EEF1AE2BAE9157ACB0F4A91FDCB2A3A5979AC9B7159F12C58574428765A41FDCD26C852BC9B093245393A3693D6077EC1AE52A45EEF52E4A729BCCB9E46C9219F3B3457"}}
2)、升级中间件授权请求:
单机版中间件的授权文件,可以放到此协议中进行升级,也可以单独请求升级,如下指令:
分别指定授权文件在服务器上的地址及文件MD5校验码、文件大小和下载验证权限Auth及Cookie,其中Cookie和Auth可为空,根据自己网站情况设置。
举例:
{"req":"Wrl_UpdateAuth","rid":2,"para":{"Url" : "http://local.zorrosoft.com/Files/Update/wrlauth.pid","MD5":"8BBCD7EAD95EFC034B724C4D8A961C03","Size":262144,"Cookie" : "","Auth" : ""}}
说明:连接主服务后可执行,可下载Url指定的授权文件并更新到本地。
注:网络版终端不需要单独升级终端电脑的授权文件,系统会自动进行。
3)、导入SSL新证书到授权文件:
{"req":"Wrl_UpdateSslCert","rid":3,"para":{"Path" : "G:/SSL"}}
说明:连接主服务后可执行,把新的SSL证书放到单独的一个子目录,然后执行此命令,成功时返回SSL证书绑定的域名。单机版用此方法得到新证书的授权文件后,再用上面的2种方法之一更新终端授权。网络版只需在服务端请求后即可。
5、请求启动弹窗小程序(C++语言)服务,下面以IE控件(ActiveX)演示调用流程及范例:
1)、打开测试网页,输入连接地址:
ws://wrl.zorrosoft.com?sid=321&pid=F90B1CF0-8485-40ec-B4E8-B87598AAB35D&flag=1
执行连接,会直接启动PluginWinExe.exe程序,界面会返回小程序使用的端口,默认12800;
2)、再次打开一个测试网页,输入连接地址:
ws://wrl.zorrosoft.com:12800?sid=888&flag=1
执行连接,小程序会提示有新连接;
3)、请求打开指定网站:
在测试网页中输入内容:
{"req":"Demo_OpenUrl","rid":1,"para":{"url" : "http://www.baidu.com"}}
然后点击发送,小程序PluginWinExe.exe会自动打开指定的网页
4)、将连接pid替换为99225C6D-B7A3-441c-AEFB-3EE23ACA2209,可以测试C#版实现的类似小程序功能,默认侦听端口是12900。
6、请求启动无窗口小程序(C++语言)服务:
1)、打开测试网页,输入连接地址:
ws://wrl.zorrosoft.com?sid=666&pid=C38672FA-B5C8-4D9D-89B5-2D71F0760661&flag=1
连接请求指定pid的服务;
2)、发送框输入内容以下内容并发送,实现写入内容到我的文档目录记事本文件中:
{"req":"Demo_WriteFile","rid":20,"para":{"Name" : "文件小程序.txt","Content" : "这是测试写入的内容!"}}
3)、发送框输入内容以下内容并发送,实现写读取指定文件内容:
{"req":"Demo_ReadFile","rid":21,"para":{"Name" : "文件小程序.txt"}}
7、请求启动无窗口小程序(C#语言)服务,连接地址:
ws://wrl.zorrosoft.com?sid=666&pid=FCADA8A7-D975-42c6-B5D3-FA40F6FE1286&flag=1
其它步骤参考 无窗口小程序(C++语言)。
8、请求启动弹窗小程序(C#语言)服务,连接地址:
ws://wrl.zorrosoft.com?sid=666&pid=99225C6D-B7A3-441c-AEFB-3EE23ACA2209&flag=1
其它步骤参考 弹窗小程序(C++语言)。
请求参数的JSON数据包,请确保是UTF-8无签名的编码。如还有疑问,请加微信客服:ZorroSoft 或QQ群:23126938联系客服
\ No newline at end of file
VLC多媒体播放网页小程序(支持多路):基于跨浏览器的小程序系统-PluginOK(牛插)中间件( https://github.com/wangzuohuai/WebRunLocal )开发,底层调用VLC的ActiveX控件axvlc.dll(需安装VLC media player或搭配绿色版VLC播放程序)可实现在网页中内嵌播放多路RTSP的实时视频流。最低可用在Chrome 41、Firefox 52、Edge 80(Chromium内核)、360极速/安全、IE、Oprea 36、QQ等浏览器,也兼容运行于这些浏览器的最新版本。
1、PluginOK(牛插)中间件的安装:
1)、如果是exe的安装程序,请直接运行安装;
2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装;
3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有WrlService.txt日志文件输出运行情况。
2、VLC多媒体播放网页小程序控制相关接口:
说明:以下功能请通过Web Socket连接PluginOK主服务(ws://localhost?sid=12345&flag=1)后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.doc”),请在连接地址中指定端口号进行连接。
HTTP网页在线测试:http://zorrosoft.com/vlcfull.html HTTPS网页在线测试:https://zorrosoft.com/vlcframe.html
前端集成可参考以上测试网页进行,HTML网页中需要嵌入以下类似代码;
A、标记小程序的显示位置和大小
.VLCApplet {
margin: 20px 0 0 20px;
width: 480px;
height: 320px;
border: 1px solid blue;
}
或者
.VLCApplet {
width: 480px;
height: 320px;
top: 20px;
left: 20px;
border: 1px solid blue;
}
B、嵌入
支持IFrame的:
<iframe name="VLCApplet" id="VLCApplet" src="VLCApplet3.html" frameborder="0" align="left" width="550" height="540" scrolling="no>
<param ID="2" Play="http://www.zorrosoft.com/Files/PluginOKBrowserApplet.mp4" />
<param ID="3" Play="rtsp://wzh:test123456@192.168.1.8:554/h264/ch1/main/av_stream" Caching="500" />
</iframe>
或者直接用
<div id="VLCApplet" class="VLCApplet"</div>
另外需要嵌入用到的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
金山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的:
<iframe name="OfficeApplet" id="OfficeApplet" src="OfficeApplet3.html" frameborder="0" align="left" width="550" height="540" scrolling="no">
或者直接用
<div id="OfficeApplet" class="OfficeApplet"</div>
另外需要嵌入用到的JS脚本,脚本程序是完全开源的。
1)、请求启动微软Office内嵌网页小程序实现网页中局部加载doc/xls/ppt等文档显示:
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设定的值做修正
OType 11启动WPS 文字处理;OType 12启动WPS 表格;OType 13启动WPS 演示;
Url:加载小程序所在的网页实际地址
Open:为需要打开的文档路径,磁盘目录斜杠用/
注意:Open和Url如果有特殊字符或中文等,需要用URL编码处理后传递
举例:
自动识别当前浏览器并启动WPS文字处理
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Title":"Office Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"11","Open":"D:/Zorro/test.doc"}}
自动识别当前浏览器并启动WPS表格处理
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Title":"Office Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"12","Open":"D:/Zorro/test.xls"}}
自动识别当前浏览器并启动WPS演示处理
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Title":"Office Applet","Flag":1,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"13","Open":"D:/Zorro/test.ppt"}}
自动识别当前浏览器指定位置自动适配网页大小启动:
{"req":"Wrl_OfficeApplet","rid":6,"para":{"Type":"0","Title":"Office Applet","Flag":9,"IframeX":0,"IframeY":0,"BarW":0,"BarH":0,"Url": "http://zorrosoft.com/OfficeApplet2.html","OType":"11","Open":"D:/Zorro/test.doc"}}
当前页指定位置自动适配网页加载测试
http://zorrosoft.com/officeframe.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":"60E61D43-503A-470B-9DAA-8E703E1F8BE8","Port":910}}
返回的侦听端口,可再建立一个Web Socket连接后,调用小程序中的相关功能,比如新打开一个网页。
2)、请求控制金山WPS内嵌网页小程序:
当前端不再需要小程序时可指定关闭,或者显示/隐藏及全屏显示等
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)、请求滚动金山WPS内嵌网页小程序:
当前端截取到网页滚动时,需要调用此接口实现小程序和网页的滚动联动
ID为启动小程序时返回JSON中的ID值
Code为滚动方向1是水平直,2是垂直,3是同时
Left为横向滚动条位置,Top为纵向滚动条位置
{"req":"Wrl_AppletScroll","rid":3,"para":{"ID":"1","Code":2,"Left":0,"Top":100}}
4)、请求改变金山WPS内嵌网页小程序显示位置或大小:
当前端网页显示区域缩放时,可动态修改小程序的显示位置或大小
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)、请求缩放金山WPS内嵌网页小程序,用于浏览器网页按比例缩放,一般不需要处理:
ID为启动小程序时返回JSON中的ID值,Scall为缩放百分比
{"req":"Wrl_AppletScale","rid":7,"para":{"ID":1,"Scale":120}}
3、小程序安装、升级、卸载
1)、请求安装金山WPS内嵌网页小程序
请在输入框中,输入如下请求,然后点击发送,完成安装:
{"req":"Plugin_Install","rid":1,"para":{"Name":"金山WPS内嵌网页小程序","PID":"60E61D43-503A-470B-9DAA-8E703E1F8BE8","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的金山WPS内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌文字、表格、演示等程序进行在线编辑或审阅各类办公文档。","DownAddr":"http://local.zorrosoft.com/Files/Plugin/WpsApplet.pid","MD5":"8A2BF2C3B0B84FD1E10AB78F4DCEA4F7","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"650878023128E9AE45FC679E20F6BA709E21AC3DA8788E1C16BC611E0585BA8D88E1F538FD3690C0312CF0D2E663E78EC5ED7B22B2B4F785270A05FB22BEDC53F6A04A55D81B9DCF6E8E0B465FB72E29961BCF5A81AEE680BB62428729209A1E49CCCDF326C27006740CAF4C6D609ADBF1096EB0241C7F79E71E750DBEE305FB21E47084B6F9F5441AE8B75F5F563E551196F5BCF7E3879B84980F3195F917092B380F17768384282A4BEA602DD0C18B57A95DDFC437F6B11E9358958061E1019060D7BC64668AF82D09FDEA3C91351E54BB13DA30C2BF909FCF4C10E48DF8343B5007267710E07F7165CA5E046376708EC6DDC474A714A95BAECC8E881DC1E3"}}
启动安装后,会不断收到安装进度直到安装结束。
在发布时,也可以把此小程序目录文件和中间件一起打包后发布,不用单独分发。
2)、请求升级金山WPS内嵌网页小程序:
{"req":"Plugin_Update","rid":1,"para":{"Name":"金山WPS内嵌网页小程序","PID":"60E61D43-503A-470B-9DAA-8E703E1F8BE8","Date":"2020-12-12","Desc":"PluginOK之上跨浏览器的金山WPS内嵌网页小程序,支持在Chrome、Firefox、Edge、IE、Oprea、360、QQ等最新版本浏览器网页中内嵌文字、表格、演示等程序进行在线编辑或审阅各类办公文档。","DownAddr":"http://local.zorrosoft.com/Files/Plugin/WpsApplet_Update.pid","MD5":"D630F9EA3EED3108042D1AA5F6D201FC","Version":"2.0.3.11","Size":753664,"HideIns":0,"Type":8,"Cookie":"","Auth":"","TK":"492EB18AEFBC118EDB5AAD43AC3CCDC6160D44CAE463C26E6E326E3BC277907A9B27A8B31B44C896CC384BF1AAD20CC9B8DCA28B6DFB8B4E92D966007DA4F508D925820EF0F3347D7773060D98E3F9570C1D55530AB37FB99396FD157E2D374D61999A8DF1C187126009255F380CAAD9C366DDE0491D877F7C5712FD1930E6B621A6F7B1838185C088230EEFD152382196A77F7B69CC93FBEA7F7B7BF54A947C1C456450BF0E6E1F1C0F8DCB6DD476DBB3ECEB8ED2F0BA82AD5C298615D08681334BD065963529333907D4A6256E85931245CD0524239C1370195016496AEC71FC400F1F6CDB8146F76B6E7313942D8605AA04DEB86B69636B9206262AEEE9F3"}}
以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。
3)、请求卸载金山WPS内嵌网页小程序:
{"req":"Plugin_Remove","rid":3,"para":{"PID":"60E61D43-503A-470B-9DAA-8E703E1F8BE8","Type":8}}
4、金山WPS内嵌网页小程序转调用WPS软件的VBA接口,先根据Wrl_OfficeApplet请求启动后返回的端口号,新建立一个WebSocket连接后可执行如下指令:
A、常用功能请求:
请求退出小程序
{"req":"Office_Exit","rid":1,"para":{}}
请求关闭文档
{"req":"Office_Close","rid":2,"para":{}}
请求打开文档
{"req":"Office_Open","rid":3,"para":{"Open":"D:/Zorro/test.doc"}}
5、事件通知:
A、
B、PluginOK支持的事件通知:
1) 小程序是否响应了热键全屏
以下分别为Word字处理、Excel表格、Powerpoint演示程序的全屏事件通知
{"event":"WORD_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记
{"event":"EXCEL_FullScreen","data":{"FullScreen":0}} FullScreen为当前是否全屏标记
{"event":"PPT_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
文件已添加
文件已添加
文件已添加
文件已添加
文件已添加
{
"WS": 80,
"WSS": 443,
"HTTP": 90,
"HTTPS": 450,
"Localhost": 1,
"ListenIP": "",
"WSErrTime": 30,
"ValidHour": 48,
"Monitor": 60,
"Delay": 0,
"Mac": 1,
"Language": "CHS",
"NoService": 0,
"UDisk": 0
}
\ No newline at end of file
文件已添加
文件已添加
文件已添加
文件已添加
文件已添加
文件已添加
PluginOK(牛插)中间件(以下简称PluginOK)软件使用授权协议
敬告:如果您不接受此协议,请勿使用本软件!
------------------------------------------------------------------------
1. 跨浏览器的小程序系统及相关小程序-PluginOK软件的全部知识产权归
属于成都佐罗软件有限公司。本软件受著作权法和国际公约保护,并且技
术实现思路和方案已申请软件发明专利保护。
2. 限制:
PluginOK软件版权归属于成都佐罗软件有限公司,此软件包含商业秘密,
为了保护这些秘密,您不可对软件进行汇编解析、工程还原、分解或简化,
将软件变成能被人识别的格式。未经授权您不可以进行更改、改写、翻译、
出租、租赁、外借、分销,以从中获利或进行散布,或创建依靠此软件及
其任何一个部分进行工作的软件变体。
3. 所有权
PluginOK软件及软件包中的所有示例代码和文档的版权、专有权和商业
秘密全都归成都佐罗软件有限公司所有。成都佐罗软件有限公司保留此及其
所有后续副本的名称、所有权和知识产权,而不管它们的软件格式或存在的
介质如何。此软件受专利法、版权法和国际版权及国际专利条约的保护。
4. 免责声明
由于软件固有的复杂性和使用场景的多样性,成都佐罗软件有限公司对
PluginOK软件的使用不提供任何形式的担保和赔偿。使用PluginOK软件时
产生的风险,包括(但不限于)传输出错和已有数据或软件的毁坏,成都佐
罗软件有限公司不做任何保证,不论是明确的或是意味着的。而且特别声明
不保证适合某一特定用途。
5. 责任限制
成都佐罗软件有限公司不会在任何情况下,根据任何法律理论、民事条
例、合同或其它契约,对您或其他任何人使用本软件导致的任何间接、特
殊、事故性或后果性的任何一方面的损失承担责任。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册