AppEmit 中间件 说明书
程序名称 |
AppEmit.exe |
|
程序版本 |
v1.0.0 |
|
说明书版本 |
v1.0.0 |
|
网址 |
http://www.appemit.com |
|
|
|
|
修改时间 |
2020年8月29日 |
|
修订 |
v1.0.3 |
|
AppEmit是应用程序(尤其是浏览器)与本地程序间互相通信的易扩展的轻量级中间件。
AppEmit is an extensible lightweight middleware for communication between applications (especially browsers) and local programs.
主要采用了HTML5国际标准的Web Socket进行通话,默认为异步, JSON格式传递参数。
程序名称 AppEmit.exe
网址 http://www.appemit.com
Github https://github.com/appemit/appemit
Email联系 appemit(at)appemit.com
内容分发下载地址 github下载地址
支持同步、异步(默认)处理消息或者消息组
支持一个页面打开多个APP
支持本地文件和网络文件访问
支持获取硬件信息,包括系统、CPU、主板、显卡、内存、硬盘、网络等
支持USB监控
支持pcomm串口异步多线程调用
支持用户间通信、发送接收消息
支持使用IE、webkit、blink内核打开,互动网页
支持打开、互动flash,包括ActiveX flash和NPflash
支持多媒体播放
支持打开、编辑、代码互动microsoft office、金山office的world、excel、ppt,支持本地文档和网络文档处理
支持打开PDF
支持调用第三方dll、com等链接库
支持开发dll等
Windows系统,支持XP以上。
软件/插件 |
功能/方式 |
依赖条件 |
说明 |
AppEmit |
|
Windows系统XP以上 |
32位, 可以运行在x64、 x86上 |
flash |
调用本地flash AcitveX控件,打开swf文件 |
本地安装flash AcitveX控件 |
|
打开网络中含有swf的网页 打开网络中的文件swf |
自动安装插件 |
或者下载完全插件版本可局域网使用。后续同。 |
|
IE |
打开网络中含有swf的网页 采用不同内核IE\webkit打开网络或者本地网页 |
- |
|
|
阅读网络或者本地PDF文件 |
- |
|
Office |
打开、编辑Office文档 |
本地安装Office |
|
媒体文件 |
打开网络中的文件 视频格式:mp4、flv、m3u8、rtmp 视频编码:H.264 音频编码:AAC、MP3 音频格式:MP3等文件 |
- |
|
在windows系统中,下载免安装程序AppEmit(不含插件小于6M),运行AppEmit.exe即可。设置了开机自启动,应避免被杀毒软件关闭。
同时只能开启一个AppEmit.exe进程。
采用开源或公共控件,安全可靠。
Dll文件开放了C接口,可以在此基础二次开发控件,主要调用
一个账户cid目前最多15个,设置cid后不要任意修改,更新数据有1-2小时延迟。
AE_initAppWs("ws://localhost:80/appemit?cid=00000-1&sid=1&flag=1")
var AE_initSet = {
"emit":"init",
"clientKey": "temp-0000000000", //
"clientInfo":clientInfo,
"wsUrl": wsUrl,
// "flag":0,
// "sid":"123456", // 用户session 或者用户名ID,唯一可以准确通话
"gid": "[1,2]", //用户群ID,一个用户可以加入多个群
// "utf_escape":false, //默认false, 反馈的data编码转义
};
AE_EmitReq_PIP(AE_initSet);
AE_OpenApp('{"emit":"hardWare","Obj":"pc","par0":{"dev":["os","base"]}}')
在demo下主要是html的举例,
使用浏览器打开demo下的index.html。授权连接后,发送获取PC信息命令。
AE_initAppWs("ws://localhost:80/appemit?cid=00000-1&sid=1&flag=1")
AE_OpenApp('{"emit":"hardWare","Obj":"pc","par0":{"dev":["os","base"]}}')
打开demo下的index.html,模拟不同sid打开浏览器。
连接Appemit授权后,在sid=1下发送命令。
{"emit":"msg", "Obj":"sid","toSids":["2"],"toGids":[1,2],"data":"hi, I am Tom."}
在客户cid全集下,通过唯一的sid对话,可以一对一,或者一对多通话。
图为1对2和3通话。
另外还可以设置不同群gid,一个sid可以加入不同的gid。
发送消息时,在cid全集下,所有的toSids和toGids取对应的sid交集剔重,并排除自身。
已系统默认的程序,打开文件。
为了安全,不支持直接打开的类型包括
{"exe";"msi";"cmd";"js";"jar";"inf";"com";"scr";"reg";"bat";"vbs";"py"}
发送命令打开文件,以独立的方式打开,和浏览器没有关系。
{"emit":"open", "Obj":"file","AppShow":false,"src":["/demo/htmlDemo/file/d1.docx",null,null,1]}
src:EXE文件路径, 启动参数="",操作类型 = "open",显示属性 _SW_,工作目录=""
两种方法,主要四种形式实现场景
能打开常用网页,目前的插件不支持html5的媒体特性。如有需要,可以使用node或者electron插件。
使用webkit内核使用Appemit程序自带的插件NPSWF32.dll,能打开嵌有flash的网页,不默认具有右键菜单。
连接授权后,发送命令"AppType":1的形式。
{"emit":"open","Obj":"flash","AppType":1,"src":"http://sxiao.4399.com/4399swf/upload_swf/ftp14/yzg/20140328/bombit7/zx_game7.htm","pos":1}
使用Appemit程序自带的插件NPSWF32.dll, 打开网络flash文件。
连接授权后,发送命令"AppType":2的形式。
{"emit":"open","Obj":"flash","AppType":2,"src":"http://sxiao.4399.com/4399swf/upload_swf/ftp18/liuxy/20160130/17801/game.swf","pos":1,"par0":{"autoPlay":true,"loop":true,"quality":"high","wmode":"Transparent"}}
使用Appemit程序自带的插件NPSWF32.dll, 打开网络媒体文件,包括flv,mp4等。
连接授权后,发送命令"AppType":3的形式。
{"emit":"open","Obj":"flash","AppType":3,"src":"https://media.html5media.info/video.mp4","pos":1,"par0":{"autoPlay":1,"loop":1}}
打开demo下的AppEmbed.html,连接授权后,发送使用ActiveX("AppType":4)打开网络flash文件命令,参数如下。
{"emit":"open","Obj":"flash","AppType":4,"src":"http://img1.yo4399.com/swf/00/0ff035e0e96584c07df65ab3636f72.swf","pos":1,"par0":{"autoPlay":1,"toolbar":0,"rightMenu":0,"hitCaption":0,"hideStop":0,"loop":1,"volumeMute":0,"flashVars":"a=0&b=0&c=SetInSrc"}}
注意事项:
在客户端需要下载安装flash player ActiveX。
路径是 / 或许 \\
flashVars可以设置在src中
AppType正数为嵌入APP,负数为浮动窗口,后同。
刷新即可关闭flash
可以是绝对或者相对路径,相对于AppEmit.exe的路径:"demo/htmlDemo/test1.swf"。
{"emit":"open","Obj":"flash","AppType":4,"src":"demo/htmlDemo/test1.swf","pos":1,"par0":{"autoPlay":1,"toolbar":0,"rightMenu":0,"hitCaption":0,"hideStop":0,"loop":1,"volumeMute":0,"flashVars":"a=0&b=0&c=SetInSrc"}}
具有右键菜单。
"AppType":1使用IE内核打开网页
{"emit":"open","Obj":"web","AppType":1,"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"http://www.appemit.com"},"par0":{"header":null,"noScriptErr":true, "UIFLAG":null,"DLCTL":null,"userAgent":null,"crossDomain":true}}
设置htmlStr可以直接打开html源码。
设置HttpServer_startUrl,可以打开本地的html文件。
设置URL打开网页。 三者优先级依次下降。
"AppType":2使用webkit开源内核打开网页
{"emit":"open","Obj":"web","AppType":2,"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"http://www.appemit.com"},"par0":{"header":null, "userAgent":null,"crossDomain":true,"downLoad":1}}
设置htmlStr可以直接打开html源码。
设置HttpServer_startUrl,可以打开本地的html文件。
设置URL打开网页。 三者优先级依次下降。
"AppType":3使用开源blink内核(webkit加强版)打开网页,可以浏览网页,支持前进 后退 刷新 复制 粘贴,支持下载。
{"emit":"open","Obj":"web","AppType":3,"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"http://www.appemit.com"},"par0":{"header":null, "userAgent":null,"crossDomain":true,"downLoad":1}}
设置htmlStr可以直接打开html源码。
设置HttpServer_startUrl,可以打开本地的html文件。
设置URL打开网页。 三者优先级依次下降。
"AppType":4使用开源blink内核打开阅读PDF文件,支持本地和网络PDF。
{"emit":"open","Obj":"web","AppType":4,"pos":1,"par":{"URL":"/demo/AppEmit_help.pdf","par0":{"rightMenu":1}}}
设置URL打开PDF文件。
使用微软com技术创建、打开阅读、编辑Office,包括word\excel\PPT文件,支持本地和网络文件。
支持在javaScript中添加类似VBA代码动态控制,同时可以在浏览器网页里执行命令。
使用 com技术创建、打开阅读、编辑金山wps ,包括wps\et\wpp文件,支持本地和网络文件。
支持在javaScript中添加类似VBA代码动态控制,同时可以在浏览器网页里执行命令。
使用微软开源控件DsoFramer创建、打开阅读、编辑Office,包括word\excel\PPT文件,支持本地和网络文件。
{"emit":"open",
"Obj":"office",
"AppType":1,
"src":"/demo/htmlDemo/file/x1.xls",
"pos":1,
"par0":{"Caption":true,
"ProtectDoc":0,
"Toolbars":true,
"btnFile":true,
"MNU_NEWBLANK":0,
"MNU_NEW":0,
"MNU_OPEN":0,
"MNU_CLOSE":0,
"MNU_SAVE":0,
"MNU_SAVEAS":0,
"MNU_PGSETUP":0,
"MNU_PRINT":0,
"MNU_PROPS":0,
"show_UpdateTool":true}
}
设置src打开office文件。
主要有三种方法来实现。
可以调用标准的COM组件、ActiveX以及DLL,支持可视化ocx,同时可以开发互动的dll,能在浏览器中控制调用的组件或者程序。
|
APP |
嵌入网页JS |
浏览器网页 |
AppEmit |
使用IE内核打开网页,在非IE浏览器中调用activeX控件,及使用原有的html的代码即可。
{"emit":"open","Obj":"web","AppType":1,"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"http://www.baidu.com"},"par0":{"header":null,"noScriptErr":true, "UIFLAG":null,"DLCTL":null,"userAgent":null,"crossDomain":true}}
设置htmlStr可以直接打开html源码。
设置HttpServer_startUrl,可以打开本地的html文件。
设置URL打开网页。 三者优先级依次下降。
同时也能通过浏览器网页发布命令。
{"emit":"open","Obj":"dll","AppType":1,"src":[],"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"/demo/htmlDemo/js/dllJs.html","webJs":1}
调用C:/Windows/SysWOW64/Macromed/Flash/Flash32_32_0_0_403.ocx 控件,需要自行安装flash.
可以在dllJs.html进一步设置参数AppType==1情况,和过程调用代码。
同时也能通过浏览器网页发布命令。
报表控件reportX调用。
能在网页中执行命令,控制reportX,举例见demo/htmlDemo/dll.html
{"emit":"open","Obj":"dll","AppType":2,"src":[],"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"/demo/htmlDemo/js/dllJs.html","webJs":1},"par0":{"AppMethod":"msg Synchronization component need set: POST" }}
调用"/plugins/thirdparty/report/ReportX.ocx" 控件
可以在dllJs.html进一步设置参数AppType==2情况,和过程调用代码。
同时也能通过浏览器网页发布命令。
{"emit":"open","Obj":"dll","AppType":4,"src":[],"AppShow":false,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"/demo/htmlDemo/js/dllJs.html","webJs":1 },"par0":{"AppMethod":"msg Synchronization component need set: POST" }}
可以在dllJs.html进一步设置参数AppType==4情况,和过程调用代码,演示调用add方法。
同时也能通过浏览器网页发布命令。
可以通过2种方法来实现
下面介绍第一种方法,自有开发的私人DLL或者组件,需要申请Pid后开发dll,安装在/plugins/private/目录下,需要双方验证成功后才能调用
参考demo/htmlDemo/dll/dll_demo1.c,提供了接口规范。 使用最新版本TCC开发的dll。
调用dll_demo1.dll,能在嵌入网页中执行命令,控制dll_demo1,举例见demo/htmlDemo/dll.html
{"emit":"open","Obj":"dll","AppType":3,"src":[],"AppShow":false,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"/demo/htmlDemo/js/dllJs.html","webJs":1 },"par0":{"AppMethod":"msg Synchronization component need set: POST" }}
调用/plugins/private/50FCF891-1B93-4AE5-8A66-AB26A3C03378/dll_demo1.dll
可以在dllJs.html进一步设置参数AppType==3情况,和过程调用代码。
同时也能通过浏览器网页发布命令runCmd。
在发布时,也可以把此AppEmit插件目录文件和AppEmit.exe一起打包后发布,不用单独分发。
名称 |
路径 |
作用 |
blink |
/plugins/lib/web/blink/.dll/node.dll |
浏览器内核 |
/plugins/lib/web/blink/.dll/wkex.dll |
||
flash_NP |
/plugins/NPSWF32.dll" |
NP版本flash |
/plugins/plugin.vch |
||
aliplayer |
/plugins/common/aliplayer |
Aliplayer播放器支持 视频格式:mp4、flv、m3u8、rtmp 视频编码:H.264 音频编码:AAC、MP3 音频格式:MP3 |
|
/plugins/common/pdfjs |
浏览PDF文件 |
自有开发的私人DLL或者组件,需要申请Pid (pid>=guid=clsId)可使用GUID工具自行生成后开发dll,安装在/plugins/private/目录下,需要双方验证成功后才能调用
参考demo/htmlDemo/dll/dll_demo1.c,提供了接口规范。 使用最新版本TCC开发的dll。
主要是5个函数接口,App开头的函数和变量名称不要改变
AppDll_init dll初始化,用户输入参数 认证
AppDll_loaded dll启动后执行
AppDll_destroy dll 退出前执行
AppDll_RevMsg 互动时 接收 消息
AppDll_SendMsg 互动时 反馈 消息
模板如下,使用了cJSON开源库。
#include
// #include
#include "cJSON.h" 需要下载开源库cJSON
#include "cJSON.c"
// 开发可以互动信息的动态链接库 Dll
// http://www.appemit.com
生成DLL 必须使用最新版tcc扩展库才能支持UTF8,UTF16字符串
/*
入口函数,该函数可以有也可以没有。
入口函数会自动加锁以保证线性调用,要避免在DllMain内调用下列函数:
1、调用LoadLibrary或其他可能加载DLL的API函数( CreateProcess等 )
2、可能再次触发DllMain的函数,例如 CreateThread,ExitThread
3、GetModuleFileName, GetModuleHandle 等其他可能触发系统锁的API函数
总之在DllMain最好不要调用API函数.
*/
/*
主要是5个函数接口,App开头的函数和变量名称不要改变
AppDll_init dll初始化,用户输入参数 认证
AppDll_loaded dll启动后执行
AppDll_destroy dll 退出前执行
AppDll_RevMsg 互动时 接收 消息
AppDll_SendMsg 互动时 反馈 消息
*/
char *mycid ="00000-1"; //申请的公司产品cid ,需要修改
char *clsId="50FCF891-1B93-4AE5-8A66-AB26A3C03378"; // pid>=guid=clsId 可使用GUID工具自行生成
int dllThid; //本进程ID
// sid; //websocket里面设置的,一般为用户ID或者sessionID,唯一
// rid ; //第rid次调用
int AppAuth=0; //
//测试
char* joinStr(char *s1, char *s2, char *s3)
{
char *result = malloc(strlen(s1)+strlen(s2)+strlen(s3)+1);//+1 for the zero-terminator
if (result == NULL) exit (1);
strcpy(result, s1);
strcat(result, s2);
strcat(result, s3);
return result;
}
int __stdcall DllMain(void * hinstDLL, unsigned long fdwReason, void * lpvReserved) {
if (fdwReason == 1/*DLL_PROCESS_ATTACH*/ ){
}
return 1;
}
//__declspec(dllexport) 声明导出函数
__declspec(dllexport) int AppDll_RevMsg(HWND hwnd, char *ids,char *msg)
{
AppDll_SendMsg(hwnd,ids,msg);
return 0;
}
__declspec(dllexport) int AppDll_SendMsg(HWND hwnd, char *ids,char *msg)
{
//检查是否有 clsId
cJSON * ids_json= cJSON_Parse(ids);
if (!ids_json) {ids_json=cJSON_CreateObject();}
if (!cJSON_GetObjectItem(ids_json,"clsId")) {
cJSON_AddStringToObject(ids_json, "clsId", clsId); //必需字段
}
ids=cJSON_PrintUnformatted(ids_json);
cJSON_Delete(ids_json);
struct {char * ids;char * msg; } callBackMsg = {
.ids=ids,
.msg =msg, // 只会反馈msg里面data字段到websocket
};
SendMessage(
hwnd,0xACCE ,
"AppOnMsg({string ids;string msg;})", //要调用的窗体函数名( 结构体原型声明 ); 结构体原型声明应使用API语法
&callBackMsg //将前面定义的结构体作为调用参数
);
return 0;
/*
0xACCE=_WM_THREAD_CALLBACK 使所有回调安全的转发到UI线程。
_WM_THREAD_CALLBACK 可以跨线程跨语言并且不需要创建回调线程,适用任何普通winform对象。
*/
}
__declspec(dllexport) int AppDll_init(HWND hwnd, char *ids,char *msg)
{
//判断获得AppEmit提供ids(格式json)里面cid sid pid AuthKey等数据
//和websocket的自行web提供的Json里面的data,判断验证来源是否正确
// ids ="{\"cid\":\"00000-1\",\"sid\":\"f1s\",\"rid\":2333,\"AuthKey\":\"000\",\"clsId\":\"50FCF891-1B93-4AE5-8A66-AB26A3C03378\"}";
//具体数据和判断需要修改
cJSON * ids_json= cJSON_Parse(ids);
// char * ids3= cJSON_PrintUnformatted(ids_json); //如果解析报错尝试使用cJSON
// cJSON * ids_json2= cJSON_Parse(ids3);
if (!cJSON_GetObjectItem(ids_json,"clsId") || !cJSON_GetObjectItem(ids_json,"cid") || !cJSON_GetObjectItem(ids_json,"AuthKey")) { cJSON_Delete(ids_json);return -1;}
dllThid = GetCurrentThreadId();
cJSON_AddNumberToObject(ids_json, "dllThid", dllThid); //必需
cJSON_AddStringToObject(ids_json, "more", NULL); //备用字段
//必须反馈验证
if (strcmp(cJSON_GetObjectItem(ids_json,"cid")->valuestring,mycid)==0 && strcmp(cJSON_GetObjectItem(ids_json,"AuthKey")->valuestring,"000")==0 && strcmp(cJSON_GetObjectItem(ids_json,"clsId")->valuestring,clsId)==0) {
//msg若反馈必须有 \"clsId\" \"AppAuth\"。AppAuth为1 clsId一致 才继续 // 支持\" 或者 '
msg = joinStr("{\"data\":{\"code\":200,\"cid\":\"00000-1\",\"sid\":\"123\",\"rid\":-1,\"rec\":",msg,",\"AppStep\":\"init\"}}");
cJSON_AddNumberToObject(ids_json, "AppAuth", 1);
char *ids2=cJSON_PrintUnformatted(ids_json);
//必须反馈验证
AppDll_SendMsg(hwnd,ids2,msg);
}else{
cJSON_AddNumberToObject(ids_json, "AppAuth", 0);
char *ids2=cJSON_PrintUnformatted(ids_json);
// 反馈验证
AppDll_SendMsg(hwnd,ids2,NULL);
}
cJSON_Delete(ids_json);
return 0;
}
__declspec(dllexport) int AppDll_loaded(HWND hwnd, char *ids,char *msg)
{
//处理业务 //msg若反馈必须有data
// msg = joinStr("{\"data\":{\"code\":200,\"cid\":\"00000-1\",\"sid\":\"123\",\"rid\":-1,\"rec\":",msg,",\"AppStep\":\"loaded\"}}");
//若反馈则
AppDll_SendMsg(hwnd,ids,msg); //如果msg中没有data,则不反馈到浏览器中
return 0;
}
__declspec(dllexport) int AppDll_destroy(HWND hwnd, char *ids,char *msg)
{
//处理业务msg若反馈必须有 data
//msg = joinStr("{\"data\":{\"code\":200,\"cid\":\"00000-1\",\"sid\":\"123\",\"rid\":-1,\"rec\":",msg,",\"AppStep\":\"destroy\"}}");
//若反馈则
AppDll_SendMsg(hwnd,ids,msg);
return 0;
}
//测试
__declspec(dllexport) int Add(int a, int b )
{
return a+b;
}
__declspec(dllexport) int AppDll_init(HWND hwnd, char *ids,char *Json)
{
//判断获得AppEmit提供ids(格式json)里面cid sid pid Auth等数据
//和websocket的自行web提供的Json里面的data,判断验证来源是否正确
//msg若反馈必须有 \"AppStep\", \"clsId\" \"AppAuth\"。AppAuth为true clsId一致 才继续
// 支持\" 或者 ' 如果有data,只发送data字段到浏览器websock接收
char *msg = joinStr(joinStr("{\"data\":{\"code\":200,\"cid\":\"00000-1\",\"sid\":\"123\",\"rid\":-1,\"rec\":",Json,",\"AppStep\":\"init\"},\"AppStep\":\"init\",\"AppAuth\":true,\"clsId\":\""),clsId,"\"}");
dllThid = GetCurrentThreadId();
//必须反馈验证
AppDll_OnMsg(hwnd,ids,msg);
return 0;
}
__declspec(dllexport) int AppDll_loaded(HWND hwnd, char *ids,char *Json)
{
//处理业务 //msg若反馈必须有 \"clsId\".如果有data,只发送data到浏览器websock接收
char *msg = joinStr(joinStr("{\"data\":{\"code\":200,\"cid\":\"00000-1\",\"sid\":\"123\",\"rid\":-1,\"rec\":",Json,",\"AppStep\":\"loaded\"},\"AppStep\":\"loaded\",\"clsId\":\""),clsId,"\"}");
//若反馈则OnMsg
AppDll_OnMsg(hwnd,ids,msg);
return 0;
}
__declspec(dllexport) int AppDll_destroy(HWND hwnd, char *ids,char *Json)
{
//处理业务msg若反馈必须有 \"clsId\" .如果有data,只发送data到浏览器websock接收
char *msg = joinStr(joinStr("{\"data\":{\"code\":200,\"cid\":\"00000-1\",\"sid\":\"123\",\"rid\":-1,\"rec\":",Json,",\"AppStep\":\"destroy\"},\"AppStep\":\"destroy\",\"clsId\":\""),clsId,"\"}");
//若反馈则OnMsg
AppDll_OnMsg(hwnd,ids,msg);
return 0;
}
//测试
__declspec(dllexport) int Add(int a, int b )
{
return a+b;
}
主要有两种方法来实现。
下面使用AppEmit来调用DLL互动信息
/plugins/private/50FCF891-1B93-4AE5-8A66-AB26A3C03378/dll_demo1.dll"
就能在能在网页中执行命令,调用互动dll_demo1,举例见demo/htmlDemo/dll.html
{"emit":"open","Obj":"dll","AppType":3,"src":[],"AppShow":false,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"/demo/htmlDemo/js/dllJs.html","webJs":1 },"par0":{"AppMethod":"msg Synchronization component need set: POST" }}
可以在dllJs.html进一步设置参数AppType==3情况,在dllJs.html中也可以设置src参数和过程,调用代码。
同时也能通过浏览器网页发布命令runCmd,执行AppDll_RevMsg方法。
codeStr= txt2code(function(){/*
AppJsObject.dll_demo1.AppDll_RevMsg(AppDll_hwnd,'','{"data":"send from JS","info":3}');
* /});
var Req={"emit":"runCmd","Obj":"dll","codeStr":codeStr }
EmitReq(Req);
如果在浏览器网页中没有设置src,可以在这里设置。
src:[ {
// webJs0:0, //只能设置为0 关闭本js的控制 ; 或者注释 为默认打开控制
createType:"createDll" // dll调用
,objName:"dll_demo1"
,dllFile:"/plugins/private/50FCF891-1B93-4AE5-8A66-AB26A3C03378/dll_demo1.dll" // 必须 \\ / 放在/plugins/private/clsId/文件夹下面
,clsId :"50FCF891-1B93-4AE5-8A66-AB26A3C03378" //guid 发送给dll 信息
,iid:null
,data:'{"msg":"init from JS","info":1}' //发送给dll 数据
} //暂时支持一个控件
]
,AppShow:false //整体不可见 必须设置,默认可见
//系统启动APP ,产生AppJsObject. shockwave对象后执行
AppJsObject.dll_demo1.AppDll_destroy(AppDll_hwnd, "",{"msg":"destroy from JS","info":3}');
AppJsObject.dll_demo1
Var Req={"emit":"runCmd","Obj":"dll","codeStr": codeStr}
EmitReq(Req);
通过前面dllJs.html定义的AppJsObject.dll_demo1,可以直接控制dll_demo1。当然也可以不需要dllJs.html定义,能在浏览器网页中websocket发送使用"emit":"runCmd"命令发送AppJs_init、AppJs_loaded,代码也可以。
ws://localhost:80/appemit?cid=00000-1&sid=1&flag=1
名称 |
设置 |
含义 |
说明 |
协议 |
ws |
SSL为wss |
|
网址 |
Localhost 127.0.0.1 |
|
|
port |
[80,8617,8618,8619,9780] |
数值或者数组,默认80。
|
依次尝试打开端口。若所有端口被占用 尝试关闭最后一个port的进程,打开最后一个端口 都可以在config.in修改 |
|
[443,5124,5125,5126,43100] |
ssl默认443。 |
同上。 |
path |
appemit |
必需 |
|
para |
cid |
必需。00000-1为免费账号。 |
全集。 |
sid |
字符串,通常情况可选。唯一session或者用户名ID |
测试后最好在js中实现隐藏。如果需要调用私有APP,则必须有,否则无法互相通话。 |
|
flag |
可选。默认0,非调试。 1调试 |
|
{"emit":"init",…}
var AE_initSet = {
"emit":"init",
"clientKey": "temp-0000000000", //
"clientInfo":clientInfo,
"wsUrl": wsUrl,
// "flag":0,
// "sid":"123456", // 用户session 或者用户名ID,唯一可以准确通话
"gid": "[1,2]", //用户群ID,一个用户可以加入多个群
// "utf_escape":false, //默认false, 反馈的data编码转义
};
名称 |
设置 |
含义 |
说明 |
emit |
init |
必需。初始化请求。 |
|
clientKey |
temp-0000000000 |
必需, 客户端,与cid对应。 |
保密,js应该混淆加密。 |
clientInfo |
对象 |
必需。使用浏览器。 默认 |
|
wsUrl |
wsUrl |
必需。默认 |
可以在config.in修改 |
sid |
字母数字下划线短线 |
必需。用户或者session,唯一才可以正常通话。 |
生产环境,同一设置于此。 |
gid |
数组 |
非必需。 群 |
一个sid可有不同gid |
utf_escape |
false |
默认false |
反馈的data编码转义 |
说明,参数分组为{a,par:{b},par0:{c}}
abc里面的字段名称都要不同。
参数形式如下
名称 |
设置 |
含义 |
说明 |
|
emit |
|
init 初始化 open 打开App runCmd 互动调用App运行命令 close|closeAll 关闭App msg 发送消息 hardware 获取硬件信息 |
|
|
Obj |
|
pc
|
|
|
AppId |
1 |
1,2,3 |
一个页面一个APP,默认为1。 |
|
AppType |
1,-1 |
1,2,3,4… -1,-2,-3,-4 |
正数嵌入 负数浮动 |
|
pos |
1,-1 [left,top,width,height] |
位置 1 更新位置 -1 删除位置数据 [left,top,width,height] 保留 |
|
|
data |
|
|
|
|
src |
|
|
|
|
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
|
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
|
AppStatus |
1/0 |
系统自动反馈 0关闭 |
接收的数据 |
|
par |
|
必填参数 |
|
|
objName |
|
|
|
|
… |
|
|
|
|
par0 |
|
可填参数 |
|
|
header |
|
|
|
|
userAgent |
|
|
|
|
crossDomain |
|
|
|
|
… |
|
|
|
|
{"emit":"hardWare","Obj":"pc","par0":{"dev":["device","os","display","cpu","net","memory","storage","base"]}}
名称 |
设置 |
含义 |
说明 |
emit |
hardWare |
必需。通信请求。 |
|
Obj |
pc |
必需。目标对象。 |
|
par0 |
|
|
|
dev |
字符串 "base" 或者数组["device"] |
非必需 ["device","os","display","cpu","net","memory","storage","base"],取某个值都即可。 为空时默认设置为"base" |
"base"可获取多个设备,但是对于windows精简版本可能无法获取信息。 其它字段获取为第一个设备。 免费版本仅支持"base" |
rid |
整数 |
必需。表示本次具体请求标号。
|
如果没有设置,则每次发送命令自动加1。 后续省略描述。 |
在网页中调用Pcomm.dll的串口控件,支持多窗口同时异步跨线程调用串口。
{"emit":"open","Obj":"comm","AppType":1,"AppShow":true,"pos":1,"par":{"objName":"Pcomm1","Port":"com1","BaudRate":"9600","ByteSize":"8","Parity":"none","StopBits":"1"},"par0":{"AppMethod":"POST","Send_AsciiHex":"Ascii","Resv_AsciiHex":"Ascii","BaudRate_list":["50","75","110","134","150","300","600","1200","1800","2400","4800","7200","9600","19200","38400","57600","115200","230400","460800","921600"],"ByteSize_list":["5","6","7","8"],"Parity_list":["none","even","odd","spc","mrk"],"StopBits_list":["1","1.5","2"]}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开串口事件请求。 |
|
Obj |
comm |
必需。 |
|
AppId |
键值 |
必需。未定义时默认为AppId |
一个页面打开多个应用,应用的AppId必须不同。 |
AppType |
1
|
必需。 1 Pcomm 2 comm |
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
pos |
1 |
0无界面不需要 1 有界面,位置自动识别 |
|
data |
|
非必需。 |
启动后发送给串口的数据 |
AppShow |
false |
必需。空时默认窗口不可见。 有界面必需设置true。
|
|
AppStatus |
1/0 |
系统自动反馈 0关闭 |
接收的数据 |
par |
|
|
|
objName |
字符串 |
字符串变量, 字母开头、数字、下划线、 |
用来在js调用变量 |
Port |
com1/1 |
|
|
par0 |
|
|
|
BaudRate |
9600 |
|
|
ByteSize |
8 |
|
|
Parity |
none |
|
|
StopBits |
1 |
|
|
codePage |
65001 |
65001 utf8 1200 UCS-2LE 1201 UCS-2BE 0 不处理 |
反馈的数据编码,默认65001 |
backNoJson |
true/false |
默认false,反馈为json true,调用的dll或者ocx反馈的数据直接发送,不处理编码或者json转换 |
反馈的数据处理 |
commm32功能低,暂时未测试。
在网页中调用commm32.ocx的串口控件
{"emit":"open","Obj":"comm","pos":1,"par":{},"data":"1111","par0":{"codePage":65001,"multiThread":1,"backNoJson":0}}
名称 |
设置 |
含义 |
说明 |
||
emit |
open |
必需。打开串口事件请求。 |
|
||
Obj |
comm |
必需。 |
|
||
AppType |
2
|
必需。 1 Pcomm 2 comm |
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
||
pos |
0 |
无界面不需要 |
|
||
data |
|
非必需。 |
启动后发送给串口的数据 |
||
AppShow |
true/false |
默认窗口不可见。 有界面必需设置true。
|
|
||
par |
|
|
|
||
par0 |
|
|
|
||
attach |
1 |
附着APP方式
|
wps最好采用此方式. 如果程序出现未知错误,可采用此方式 |
|
|
codePage |
65001 |
65001 utf8 1200 UCS-2LE 1201 UCS-2BE 0 不处理 |
反馈的数据编码,默认65001 |
||
backNoJson |
true/false |
默认false,反馈为json true,调用的dll或者ocx反馈的数据直接发送,不处理编码或者json转换 |
反馈的数据处理 |
||
发送数据
名称 |
设置 |
含义 |
说明 |
emit |
send |
必需。打开串口事件请求。 |
|
Obj |
comm |
必需。 |
|
AppType |
1
|
必需。 comm |
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
data |
|
必需。 |
发送给串口的数据 |
{"emit":"hid"}
名称 |
设置 |
含义 |
说明 |
emit |
hid |
必需。获得hid通信接口信息。 |
|
|
|
|
|
{"emit":"deviceNotification","driveType":2}
名称 |
设置 |
含义 |
说明 |
emit |
deviceNotification |
必需。监控热拔请求。 |
|
driveType |
数值或者数组2 , [1,2], -1 |
-1 关闭监控 1 DRIVE_NO_ROOT_DIR 说明无效的 2 DRIVE_REMOVABLE可移动磁盘 3 DRIVE_FIXED 固定磁盘 4 DRIVE_REMOTE 网络磁盘 5 DRIVE_CDROM 光驱 6 DRIVE_RAMDISK 为RAM磁盘 |
|
{"emit":"msg", "Obj":"sid","toSids":["2"],"toGids":[1,2],"data":"hi, I am Tom."}
名称 |
设置 |
含义 |
说明 |
emit |
msg |
必需。通信事件请求。 |
|
Obj |
sid |
用户自行设定的sid |
|
toSids |
必需要有一个 |
非必需。可以是数组。 |
All sids=cid, self_sid emit msg to(distinct (toSids ∪ toSids)-self_sid) 发送的全集是:发送的用户和发送所在的群(频道、小组)的用户的全集剔重后,排除自身 |
toGids |
非必需。可以是数组。 |
||
data |
|
必需。 |
|
参数格式如下
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开控件APP通信事件请求。 |
|
Obj |
|
必需。 flash默认 word 后续支持 excel后续支持 CAD后续支持 |
|
AppType |
±1±2±3±4 |
正数 表示嵌入 负数 浮动窗口 在Obj不同时,AppType的含义不一样。 |
当AppType负数浮动窗口时,默认APP为置顶。 取消置顶 {"emit":"setPar","Obj":"flash","topMost":false}
|
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
par0 |
|
|
注意不同APP可能不同 |
attach |
1 |
附着APP方式
|
wps最好采用此方式. 如果程序出现未知错误,可采用此方式 |
header |
|
头部 |
|
|
|
|
|
userAgent |
|
代理 |
只写属性,不可读。 |
crossDomain |
bool |
默认true Ture false |
是否跨域 |
rightMenu |
右键菜单 |
-1 不处理,控件原有状态 0/null禁用菜单 1自定义简单菜单 |
|
show_UpdateTool |
显示下载插件等待窗口 |
默认true false 不显示 |
需要下载更新包显示。可以直接在 https://github.com/appemit/appemit/plugins下载全集的插件 |
|
|
|
|
以系统默认的程序,打开文件。
为了安全,不支持直接打开的文件类型包括
"exe";"msi";"cmd";"js";"jar";"inf";"com";"scr";"reg";"bat";"vbs";"py"
发送命令打开文件,以独立的方式打开,和浏览器进程独立,没有联系。
{"emit":"open", "Obj":"file","AppShow":false,"src":["/demo/htmlDemo/file/d1.docx",null]}
src:EXE文件路径, 启动参数="",操作类型 = "open",显示属性 _SW_,工作目录=""
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开控件APP通信事件请求。 |
|
Obj |
file |
必需。 |
|
AppId |
1 |
必需。 |
|
src |
|
必需。
|
[file,参数,startInfo] |
pos |
-1 |
|
|
AppShow |
false |
必需。
|
不发送pos位置等数据 |
par0 |
|
|
|
UWP |
1、0、null |
null 默认。以传统方式打开可执行文件,若失败尝试UWP文件打开 |
|
{"emit":"open","Obj":"flash","AppType":1,"src":"http://sxiao.4399.com/4399swf/upload_swf/ftp14/yzg/20140328/bombit7/zx_game7.htm","pos":1,"par0":{"header":null,"userAgent":null,"crossDomain":true}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开控件APP通信事件请求。 |
|
Obj |
flash |
必需。 |
|
AppType |
1 |
必需。 0 ActiveX 1 web 2 web flash文件 3 web媒体文件 |
若为负数-1,则是浮动窗口 |
src |
|
必需。
|
AppType为0时支持本地文件,可以是相对或者绝对路径。 |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。 |
对不同的浏览器,自动识别的位置需要优化 |
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
Par0 |
|
可选。 |
|
header |
|
头部 |
|
userAgent |
|
代理 |
只写属性,不可读。 |
crossDomain |
bool |
默认true Ture false |
是否跨域 |
show_UpdateTool |
0 |
在配置文件设置默认值 0 1显示更新文件下载窗口 0不显示 |
|
|
|
|
|
{"emit":"open","Obj":"flash","AppType":2,"src":"http://sxiao.4399.com/4399swf/upload_swf/ftp18/liuxy/20160130/17801/game.swf","pos":1,"par0":{"autoPlay":true,"loop":true,"quality":"high","wmode":"Transparent","header":null,"userAgent":null,"crossDomain":true}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开控件APP通信事件请求。 |
|
Obj |
flash |
必需。 |
|
AppType |
2 |
必需。 0 ActiveX 1 web 2 web flash文件 3 web媒体文件 |
使用webkit内核打开,没有默认的右键菜单。 若为负数-2,则是浮动窗口 |
src |
|
必需。
|
AppType为0时支持本地文件,可以是相对或者绝对路径。 |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。 |
对不同的浏览器,自动识别的位置需要优化 |
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
par0 |
autoPlay |
可选。默认true |
参考flash官方默认参数。 |
|
loop |
可选。默认true |
参考flash官方默认参数。 |
|
quality |
可选。默认high |
参考flash官方默认参数。 |
|
wmode |
可选。默认Transparent |
参考flash官方默认参数。 |
header |
|
头部 |
|
userAgent |
|
代理 |
只写属性,不可读。 |
crossDomain |
bool |
默认true Ture false |
是否跨域 |
show_UpdateTool |
0 |
在配置文件设置默认值 0 1显示更新文件下载窗口 0不显示 |
|
|
|
|
|
{"emit":"open","Obj":"flash","AppType":3,"src":"https://cdn.jsdelivr.net/gh/appemit/appemit/docs/vedio/x1.flv","pos":1,"par0":{"autoPlay":1,"loop":1,"header":null,"userAgent":null,"crossDomain":true}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开控件APP通信事件请求。 |
|
Obj |
flash |
必需。 |
|
AppType |
3 |
必需。 0 ActiveX 1 web 2 web flash文件 3 web媒体文件 |
若为负数-3,则是浮动窗口 |
src |
|
必需。
|
AppType为0时支持本地文件,可以是相对或者绝对路径。 |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。 |
对不同的浏览器,自动识别的位置需要优化 |
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
Par0 |
autoPlay |
可选。默认1 |
参考 https://player.alicdn.com/aliplayer/setting/setting.html |
|
loop |
可选。默认1 |
|
header |
|
头部 |
|
userAgent |
|
代理 |
只写属性,不可读。 |
crossDomain |
bool |
默认true Ture false |
是否跨域 |
show_UpdateTool |
0 |
在配置文件设置默认值 0 1显示更新文件下载窗口 0不显示 |
|
|
|
|
|
{"emit":"open","Obj":"flash","AppType":4,"src":"http://img1.yo4399.com/swf/00/0ff035e0e96584c07df65ab3636f72.swf","pos":1,"par0":{"autoPlay":1,"toolbar":0,"rightMenu":0,"hitCaption":0,"hideStop":0,"loop":1,"volumeMute":0,"flashVars":"a=0&b=0&c=SetInSrc"}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开控件APP通信事件请求。 |
|
Obj |
flash |
必需。 flash默认 word 后续支持 excel后续支持 CAD后续支持 |
|
AppType |
4 |
必需。 4 ActiveX 1 web 2 web flash文件 3 web媒体文件 |
设为4时,如何本地没有安装ActiveX则默认使用方式2打开 若为负数-4,则是浮动窗口 |
src |
|
必需。
|
AppType为0时支持本地文件,可以是相对或者绝对路径。 |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。 |
|
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
par0 |
autoPlay |
可选。 0 不自动播放 1自动播放,默认 |
|
|
toolbar |
可选。 0 没有控制条,默认 1 有控制条 |
|
|
rightMenu |
可选。 0 1 |
|
|
hitCaption |
可选。 0 左按鼠标不能拖动,默认 1 左按鼠标能拖动 |
|
|
hideStop |
可选。 0 隐藏不见时不停止播放,默认 1隐藏不见时停止播放 |
|
|
loop |
可选。 0 不自动循环播放, 1 循环播放,默认 |
|
|
volumeMute |
可选。 0 不静音,默认 1 静音 |
|
|
flashVars |
可选。 |
可以设置在src里面 |
show_UpdateTool |
0 |
在配置文件设置默认值 0 1显示更新文件下载窗口 0不显示 |
|
|
|
|
|
{"emit":"open","Obj":"web","AppType":1,"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"http://www.appemit.com"},"par0":{"header":null,"noScriptErr":true,"UIFLAG":null,"DLCTL":null,"userAgent":null,"crossDomain":true,"rightMenu":null}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开网页事件请求。 |
|
Obj |
web |
必需。 |
|
AppType |
1 |
必需。 1 IE内核 2 webkit内核 3 blink 内核 |
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。
|
对不同的浏览器,自动识别的位置需要优化 |
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
par |
|
必需。优先级别依次下降 |
三个参数必须有一个不是空。 |
htmlStr |
|
Html代码 |
|
HttpServer_startUrl |
|
以服务器形式打开本地html文件路径,可以是绝对或者相对路径。/为分隔符。 |
|
URL |
http://www.appemit.com 或者 /demo/htmlDemo/html.html |
支持网页地址或者本地html文件路径。 |
|
Par0 |
|
可选。 |
|
emulation |
若不指定,默认最新的IE兼容版本 |
11001 页面始终以 IE11 模式显示,而不考虑 指令 11000 包含基于标准的 指令的页面将以 IE11 模式显示 10001 页面始终以 IE10 模式显示,而不考虑 指令 10000 包含基于标准的 指令的页面将以 IE10 模式显示 9999 页面始终以 IE9 模式显示,而不考虑 指令 9000 包含基于标准的 指令的页面将以 IE9 模式显示 8888 页面始终以 IE8 模式显示,而不考虑 指令 8000 包含基于标准的 指令的页面将以 IE8 模式显示 7000 包含基于标准的 指令的页面将以 IE7 模式显示 |
参考 https://www.csdn.net/article/2012-10-22/2811049 |
noScriptErr |
bool |
默认true Ture false |
|
UIFLAG |
|
_UIFLAG_DIALOG=@0x1/*_UIFLAG_DIALOG*/ _UIFLAG_DISABLE_HELP_MENU=@0x2/*_UIFLAG_DISABLE_HELP_MENU*/ _UIFLAG_NO3DBORDER=@0x4/*_UIFLAG_NO3DBORDER*/ _UIFLAG_SCROLL_NO=@0x8/*_UIFLAG_SCROLL_NO*/ _UIFLAG_DISABLE_SCRIPT_INACTIVE=@0x10/*_UIFLAG_DISABLE_SCRIPT_INACTIVE*/ _UIFLAG_OPENNEWWIN=@0x20/*_UIFLAG_OPENNEWWIN*/ _UIFLAG_DISABLE_OFFSCREEN=@0x40/*_UIFLAG_DISABLE_OFFSCREEN*/ _UIFLAG_FLAT_SCROLLBAR=@0x80/*_UIFLAG_FLAT_SCROLLBAR*/ _UIFLAG_DIV_BLOCKDEFAULT=@0x100/*_UIFLAG_DIV_BLOCKDEFAULT*/ _UIFLAG_ACTIVATE_CLIENTHIT_ONLY=@0x200/*_UIFLAG_ACTIVATE_CLIENTHIT_ONLY*/ _UIFLAG_OVERRIDEBEHAVIORFACTORY=@0x400/*_UIFLAG_OVERRIDEBEHAVIORFACTORY*/ _UIFLAG_CODEPAGELINKEDFONTS=@0x800/*_UIFLAG_CODEPAGELINKEDFONTS*/ _UIFLAG_URL_ENCODING_DISABLE_UTF8=@0x1000/*_UIFLAG_URL_ENCODING_DISABLE_UTF8*/ _UIFLAG_URL_ENCODING_ENABLE_UTF8=@0x2000/*_UIFLAG_URL_ENCODING_ENABLE_UTF8*/ _UIFLAG_ENABLE_FORMS_AUTOCOMPLETE=@0x4000/*_UIFLAG_ENABLE_FORMS_AUTOCOMPLETE*/ _UIFLAG_ENABLE_INPLACE_NAVIGATION=@0x10000/*_UIFLAG_ENABLE_INPLACE_NAVIGATION*/ _UIFLAG_IME_ENABLE_RECONVERSION=@0x20000/*_UIFLAG_IME_ENABLE_RECONVERSION*/ _UIFLAG_THEME=@0x40000/*_UIFLAG_THEME*/ _UIFLAG_NOTHEME=@0x80000/*_UIFLAG_NOTHEME*/ _UIFLAG_NOPICS=@0x100000/*_UIFLAG_NOPICS*/ _UIFLAG_NO3DOUTERBORDER=@0x200000/*_UIFLAG_NO3DOUTERBORDER*/ _UIFLAG_DISABLE_EDIT_NS_FIXUP=@0x400000/*_UIFLAG_DISABLE_EDIT_NS_FIXUP*/ _UIFLAG_LOCAL_MACHINE_ACCESS_CHECK=@0x800000/*_UIFLAG_LOCAL_MACHINE_ACCESS_CHECK*/ _UIFLAG_DISABLE_UNTRUSTEDPROTOCOL=@0x1000000/*_UIFLAG_DISABLE_UNTRUSTEDPROTOCOL*/ _UIFLAG_HOST_NAVIGATES=@0x2000000/*_UIFLAG_HOST_NAVIGATES*/ _UIFLAG_ENABLE_REDIRECT_NOTIFICATION=@0x4000000/*_UIFLAG_ENABLE_REDIRECT_NOTIFICATION*/ _UIFLAG_USE_WINDOWLESS_SELECTCONTROL=@0x8000000/*_UIFLAG_USE_WINDOWLESS_SELECTCONTROL*/ _UIFLAG_USE_WINDOWED_SELECTCONTROL=@0x10000000/*_UIFLAG_USE_WINDOWED_SELECTCONTROL*/ _UIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE=@0x20000000/*_UIFLAG_ENABLE_ACTIVEX_INACTIVATE_MODE*/ _UIFLAG_DPI_AWARE=@0x40000000/*_UIFLAG_DPI_AWARE*/ |
可以使用一个或多个_UIFLAG_ 前缀的常量自定义外观,多个常量之间用位或操作符( | ) 连接。 LOG 禁止选中文本( 用于 web ui ) _UIFLAG_SCROLL_NO 禁用滚动条 _UIFLAG_NO3DBORDER 禁用所有窗口3D边框 _FLAG_NO3DOUTERBORDER 禁用顶层窗口3D边框 _UIFLAG_DISABLE_HELP_MENU 在菜单中移除帮助菜单 _UIFLAG_DISABLE_SCRIPT_INACTIVE 窗口激活以前不运行网页脚本 _UIFLAG_OPENNEWWIN 在新窗口打开链接 _UIFLAG_FLAT_SCROLLBAR 显示平面滚动条 _UIFLAG_ACTIVATE_CLIENTHIT_ONLY 仅在用户点击客户区时激活(非客户区指滚动条等位置) _UIFLAG_URL_ENCODING_DISABLE_UTF8 禁用UTF8发送URL _UIFLAG_URL_ENCODING_ENABLE_UTF8 使用UTF8发送URL _UIFLAG_ENABLE_FORMS_AUTOCOMPLETE 允许表单自动完成 _UIFLAG_ENABLE_INPLACE_NAVIGATION 在点击邮件等链接时,打开相关应用程序,而不是新开窗口 _UIFLAG_NOTHEME 使用主题 _UIFLAG_THEME 禁用主题 _UIFLAG_NOPICS 禁用内容分级 _UIFLAG_DIV_BLOCKDEFAULT 编辑模式回车输入div _UIFLAG_DISABLE_EDIT_NS_FIXUP 编辑模式禁用名字空间修正 _UIFLAG_LOCAL_MACHINE_ACCESS_CHECK 防止远程网页导航到本地计算机 _UIFLAG_DISABLE_UNTRUSTEDPROTOCOL 禁止非信任协议,包含 ms-its, ms-itss, its,mk:@msitstore |
DLCTL |
|
_DLCTL_DLIMAGES=@0x10/*_DLCTL_DLIMAGES*/ _DLCTL_VIDEOS=@0x20/*_DLCTL_VIDEOS*/ _DLCTL_BGSOUNDS=@0x40/*_DLCTL_BGSOUNDS*/ _DLCTL_NO_SCRIPTS=@0x80/*_DLCTL_NO_SCRIPTS*/ _DLCTL_NO_JAVA=@0x100/*_DLCTL_NO_JAVA*/ _DLCTL_NO_RUNACTIVEXCTLS=@0x200/*_DLCTL_NO_RUNACTIVEXCTLS*/ _DLCTL_NO_DLACTIVEXCTLS=@0x400/*_DLCTL_NO_DLACTIVEXCTLS*/ _DLCTL_DOWNLOADONLY=@0x800/*_DLCTL_DOWNLOADONLY*/ _DLCTL_NO_FRAMEDOWNLOAD=@0x1000/*_DLCTL_NO_FRAMEDOWNLOAD*/ _DLCTL_RESYNCHRONIZE=@0x2000/*_DLCTL_RESYNCHRONIZE*/ _DLCTL_PRAGMA_NO_CACHE=@0x4000/*_DLCTL_PRAGMA_NO_CACHE*/ _DLCTL_NO_BEHAVIORS=@0x8000/*_DLCTL_NO_BEHAVIORS*/ _DLCTL_NO_METACHARSET=@0x10000/*_DLCTL_NO_METACHARSET*/ _DLCTL_URL_ENCODING_DISABLE_UTF8=@0x20000/*_DLCTL_URL_ENCODING_DISABLE_UTF8*/ _DLCTL_URL_ENCODING_ENABLE_UTF8=@0x40000/*_DLCTL_URL_ENCODING_ENABLE_UTF8*/ _DLCTL_NOFRAMES=@0x80000/*_DLCTL_NOFRAMES*/ _DLCTL_FORCEOFFLINE=@0x10000000/*_DLCTL_FORCEOFFLINE*/ _DLCTL_NO_CLIENTPULL=@0x20000000/*_DLCTL_NO_CLIENTPULL*/ _DLCTL_SILENT=@0x40000000/*_DLCTL_SILENT*/ _DLCTL_OFFLINEIFNOTCONNECTED=@0x80000000/*_DLCTL_OFFLINEIFNOTCONNECTED*/ _DLCTL_OFFLINE=@0x80000000/*_DLCTL_OFFLINE*/ |
DLCTL_前缀的常量以控制下载行为,多个常量之间用位或操作符( | ) 连接。 _DLCTL_DLIMAGES 允许从服务器下载图片,如果指定了第三个参数,未指定此标志,则网页不下载任何图片. _DLCTL_VIDEOS 允许从服务器下载视频片断,如果指定了第三个参数,未指定此标志,则网页不下载任何视频片断. _DLCTL_BGSOUNDS 允许播放文档指定的背景声音 _DLCTL_NO_SCRIPTS web窗体不执行任何页面脚本(指javascript等) _DLCTL_NO_JAVA web窗体不执行任何 Java applet _DLCTL_NO_RUNACTIVEXCTLS web窗体不执行文档中的任何 ActiveX 控件; _DLCTL_NO_DLACTIVEXCTLS web窗体不下载文档中的任何 ActiveX 控件; _DLCTL_DOWNLOADONLY web窗体下载网页,但不显示 _DLCTL_NO_FRAMEDOWNLOAD web窗体对包含框架的页面进行语法分析但不下载任何帧, 同时忽略框架, _DLCTL_RESYNCHRONIZE web窗体忽略缓存中的数据并向服务器请求更新 _DLCTL_PRAGMA_NO_CACHE 迫使请求发送给服务器并忽略代理(这里一般指服务端缓存),即使代理指明数据是最新的也是如此. _DLCTL_NO_METACHARSET 隐藏文档中的 META 元素指示的字符集; _DLCTL_URL_ENCODING_DISABLE_UTF8 禁止 UTF-8 编码 _DLCTL_URL_ENCODING_ENABLE_UTF8 允许 UTF-8 编码 _DLCTL_NOFRAMES 禁止框架 _DLCTL_FORCEOFFLINE web窗体工作在脱机方式 _DLCTL_NO_CLIENTPULL web窗体不执行任何客户端的 pull 操作 _DLCTL_SILENT 组件对话框、脚本错误对话框静默模式 _DLCTL_OFFLINEIFNOTCONNECTED 如果未连接互联网,浏览器组件将以脱机方式工作 |
header |
|
头部 |
|
userAgent |
|
代理 |
默认null |
crossDomain |
bool |
默认true Ture false |
|
rightMenu |
右键菜单 |
-1 不处理,控件原有状态 0/null禁用菜单 1自定义简单菜单 |
各个含义不同,请注意。-1 不处理。默认有详细菜单。通常需要使用flash右键使用此值。 对于flash右键功能请测试。 |
show_UpdateTool |
0 |
在配置文件设置默认值 0 1显示更新文件下载窗口 0不显示 |
|
|
|
|
|
{"emit":"open","Obj":"web","AppType":2,"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"http://www.appemit.com"},"par0":{"header":null, "userAgent":null,"crossDomain":true,"rightMenu":1,"downLoad":1}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开网页事件请求。 |
|
Obj |
web |
必需。 |
|
AppType |
2 |
必需。 1 IE内核 2 webkit内核 3 blink 内核 |
有默认的右键菜单。 若为负数-2,则是浮动窗口 |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。
|
对不同的浏览器,自动识别的位置需要优化 |
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
par |
|
必需。优先级别依次下降 |
三个参数必须有一个不是空。 |
htmlStr |
|
Html代码 |
|
HttpServer_startUrl |
|
以服务器形式打开本地html文件路径,可以是绝对或者相对路径。/为分隔符。 |
|
URL |
http://www.appemit.com 或者 /demo/htmlDemo/html.html |
支持网页地址或者本地html文件路径。 |
|
Par0 |
|
可选。 |
|
header |
|
头部 |
|
userAgent |
|
代理 |
只写属性,不可读。 |
crossDomain |
bool |
默认true Ture false |
是否跨域 |
rightMenu |
右键菜单 |
-1 不处理,控件原有状态 0/null禁用菜单 1自定义简单菜单 |
各个含义不同,请注意。-1 不处理。默认没有菜单。通常需要使用flash右键使用此值。 对于flash右键功能请测试。 |
show_UpdateTool |
0 |
在配置文件设置默认值 0 1显示更新文件下载窗口 0不显示 |
|
downLoad |
1 |
默认true true false |
支持连接下载功能 |
|
|
|
|
{"emit":"open","Obj":"web","AppType":3,"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"http://www.appemit.com"},"par0":{"header":null, "userAgent":null,"crossDomain":true,"rightMenu":1,"downLoad":1}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开网页事件请求。 |
|
Obj |
web |
必需。 |
|
AppType |
3 |
必需。 1 IE内核 2 webkit内核 3 blink 内核 |
有默认的右键菜单。 若为负数-3,则是浮动窗口 |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。
|
对不同的浏览器,自动识别的位置需要优化 |
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
par |
|
必需。优先级别依次下降 |
三个参数必须有一个不是空。 |
htmlStr |
|
Html代码 |
|
HttpServer_startUrl |
|
以服务器形式打开本地html文件路径,可以是绝对或者相对路径。/为分隔符。 |
|
URL |
http://www.appemit.com 或者 /demo/htmlDemo/html.html |
支持网页地址或者本地html文件路径。 |
|
Par0 |
|
可选。 |
|
header |
|
头部 |
|
userAgent |
|
代理 |
可读写。默认 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3729.169 Safari/537.36 |
crossDomain |
bool |
默认true true false |
|
rightMenu |
右键菜单 |
-1 不处理,控件原有状态 0/null禁用菜单 1自定义简单菜单 |
各个含义不同,请注意。-1 不处理。默认有菜单。通常需要使用flash右键使用此值。 对于flash右键功能请测试。 |
show_UpdateTool |
0 |
在配置文件设置默认值 0 1显示更新文件下载窗口 0不显示 |
|
downLoad |
1 |
默认true true false |
支持连接下载功能 |
打开阅读PDF文件,支持本地和网络PDF
{"emit":"open","Obj":"web","AppType":4,"pos":1,"par":{"URL":" https://cdn.jsdelivr.net/gh/appemit/AppEmitWeb@master/docs/demo/AppEmit_help.pdf "},"par0":{"rightMenu":1}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开PDF事件请求。 |
|
Obj |
web |
必需。 |
|
AppType |
4 |
必需。 1 IE内核 2 webkit内核 3 blink 内核 4 PDF 文件 |
有默认的右键菜单。 若为负数-4,则是浮动窗口 |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。
|
对不同的浏览器,自动识别的位置需要优化 |
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
par |
|
必需。 |
|
URL |
https://cdn.jsdelivr.net/gh/appemit/AppEmitWeb@master/docs/demo/AppEmit_help.pdf 或者 /demo/AppEmit_help.pdf |
支持网页pdf地址,或本地文件绝对或相对路径。 |
|
Par0 |
|
可选。 |
|
rightMenu |
右键菜单 |
-1 不处理,控件原有状态 0/null禁用菜单 1自定义简单菜单 |
各个含义不同,请注意。
|
rightMenu |
右键菜单 |
-1 不处理,控件原有状态 0/null禁用菜单 1自定义简单菜单 |
各个含义不同,请注意。-1 不处理。默认有菜单。通常需要使用flash右键使用此值。 对于flash右键功能请测试。 |
show_UpdateTool |
0 |
在配置文件设置默认值 0 1显示更新文件下载窗口 0不显示 |
|
|
|
|
|
创建、打开阅读、编辑Office文件,支持本地和网络文件, 包括word\excel\PPT文件
更多VBA官方参考https://docs.microsoft.com/zh-cn/office/vba/api/overview/word
或者录制宏,编辑参考代码。
{"emit":"open","Obj":"office","AppType":1,"src":"/demo/htmlDemo/file/d1.docx","pos":1,"par0":{"Titlebar":0,"ProtectDoc":0,"Menubar":0,"Toolbars":0,"btnFile":0,"HttpPost":{"URL":"http://eu.httpbin.org/post","valid":0,"fileName":"s1.docx"},"MNU_NEWBLANK":0,"MNU_NEW":0,"MNU_OPEN":0,"MNU_CLOSE":0,"MNU_SAVE":0,"MNU_SAVEAS":0,"MNU_PGSETUP":0,"MNU_PRINT":0,"MNU_PROPS":0,"show_UpdateTool":true}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开office事件请求。 |
|
Obj |
office |
必需。 |
|
AppType |
1
|
必需。
|
有默认的右键菜单。 若为负数-1,则是浮动窗口 对于特殊wps,通常采用attach方式打开。 |
src |
字符串; path为 [path, openPar] |
path为必需, 字符串网址或者本地相对或者绝对路径 ,或者数组(防止网页src里面没有文件名称或者后缀名称需要修改,则使用fileType )。 openPar: 具体不同。 "/demo/htmlDemo/file/x1.xls" ["/demo/htmlDemo/file/x1.xls" ,openPar] [[http://.../demo/htmlDemo/file/x1.xls,"x2.xlsx"],openPar] |
Word系列文件 Excel系列文件 PPT系列文件 不同应用的openPar不同,详细见后 |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。
|
对不同的浏览器,自动识别的位置需要优化 |
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
Par0 |
|
可选。 |
|
progId |
[] |
默认为MS office ["Word.Application","Kwps.Application","WPS.Application"] ["Excel.Application","Ket.Application","ET.Application"] ["PowerPoint.Application","WPP.Application"] |
采用不同自动化服务器打开文档、表格、幻灯片,按顺序依次尝试。 默认打开微软office\金山wps |
attach |
1 |
附着APP方式
|
wps最好采用此方式. 如果程序出现未知错误,可采用此方式 |
noMinMax |
1 |
1 禁用关闭 最小 最大化按钮 0/null 可最大小化 关闭 |
遮盖关闭 最小 最大化按钮 |
openPar |
|
|
不同应用不一样,详细见后 |
Titlebar |
0 |
默认 0不显示标题栏 1 显示标题栏 0 不显示 |
|
Menubar |
1 |
默认 1显示菜单栏 1 显示标题栏 0 不显示 |
|
Statusbar |
1 |
默认 1显示状态栏 1 显示状态栏 0 不显示 |
|
Protect |
1 |
|
不同应用不一样,详细见后 |
Toolbars |
1 |
默认 1 ,显示工具栏 1 显示 0 不显示 |
需要手动点击 |
btnFile |
1 |
工具栏的文件File按钮 1 /true 默认显示 0 |
Toolbars为真时有效 |
ViewType |
1 |
|
不同应用不一样,详细见后 |
HttpPost |
{"URL":"url", "valid":1, "method":"POST" "username":"name" "username":"*" "cookie":null} |
URL上传的地址,必需 method 上传的方法POST\GET,默认POST cookie |
如果上传,URL必需,valid=1设为有效。
|
header |
|
头部 |
以下参数用于下载上传使用 |
userAgent |
|
代理 |
默认null |
cookies |
|
|
|
proxy |
|
|
|
proxyBypass |
|
|
|
flags |
|
|
|
crossDomain |
bool |
默认true Ture false |
|
MNU_UPLOAD |
0 |
默认 0 ,工具栏上传命令菜单 1 显示上传提交 0 不显示 |
Toolbars、btnFile、HttpPost["URL"] 同时为真时有效 |
MNU_NEWBLANK |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示新建空白 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_NEW |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示新建 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_OPEN |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示打开 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_CLOSE |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示关闭 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_SAVE |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示保存 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_SAVEAS |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示另存 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_PGSETUP |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示页面设置 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_PRINT |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示打印 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_PROPS |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示属性 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
show_UpdateTool |
0 |
在配置文件设置默认值 0 1显示更新文件下载窗口 0不显示 |
|
更多https://docs.microsoft.com/zh-cn/office/vba/api/overview/word
名称 |
设置 |
含义 |
说明 |
Par0 |
|
可选。 |
|
src |
[path,0,1,0] |
ConfirmConversions=false, _ ReadOnly=false, AddToRecentFiles=false, PasswordDocument="", _ PasswordTemplate="", Revert=false, WritePasswordDocument="", _ WritePasswordTemplate="", Format=wdOpenFormatAuto, XMLTransform="" |
按顺序 |
ViewType |
1 |
wdMasterView 5 主控视图。 wdNormalView 1 普通视图。 wdOutlineView 2 大纲视图。 wdPrintPreview 4 打印预览视图。 wdPrintView 3 页面视图。 wdReadingView 7 阅读视图。 wdWebView 6 Web 视图。 |
|
Protect |
[Type,NoReset,Password,UseIRM, EnforceStyleLock] |
Type必需 wdAllowOnlyComments=1只允许将批注添加到文档中。 wdAllowOnlyFormFields=2只允许通过窗体域将内容添加到文档中。 wdAllowOnlyReading=3 允许对文档进行只读访问。 wdAllowOnlyRevisions=0只允许对现有内容进行修订。 wdNoProtection=-1 不对文档应用保护。
|
更改为自行在officeJs中控制。后面同
对非保护的文档保护。 网络文件,不设置则默认为保护文档, [3,null,"random"],产生随机密码,密码不可获取,请慎重处理。 不保护设置为[-1] 对本地文件不默认处理 |
Unprotect |
pwd |
文档解锁密码 |
对保护的文档(type!=-1)输入解锁密码Unprotect不保护。
|
|
|
|
|
更多https://docs.microsoft.com/zh-cn/office/vba/api/overview/excel
名称 |
设置 |
含义 |
说明 |
Par0 |
|
可选。 |
|
src |
[path, openPar] |
( UpdateLinks、 ReadOnly、 Format、 Password、 WriteResPassword、 IgnoreReadOnlyRecommended、原产地、定界符、可编辑、通知、转换器、 AddToMru、 Local、 CorruptLoad) |
["/demo/htmlDemo/file/x1.xlsx",null,1] [[https://cdn.jsdelivr.net/gh/appemit/AppEmitWeb@master/docs/demo/file/x1.tmp,"x11.xlsx"]]
https://docs.microsoft.com/zh-cn/office/vba/api/excel.workbooks.open |
ViewType |
1 |
xlNormalView 1 正常。 xlPageBreakPreview 双面 分页预览。 xlPageLayoutView 第三章 页面视图 |
|
Protect |
数组[] |
(Password、 DrawingObjects、内容、场景、 UserInterfaceOnly、 AllowFormattingCells、 AllowFormattingColumns、 AllowFormattingRows、 AllowInsertingColumns、 AllowInsertingRows、 AllowInsertingHyperlinks、 AllowDeletingColumns、 AllowDeletingRows、 AllowSorting、 AllowFiltering、 AllowUsingPivotTables) |
对所有已经已存工作表保护 注意AllowFiltering参数 https://docs.microsoft.com/zh-cn/office/vba/api/excel.worksheet.protect |
Unprotect |
pwd |
文档解锁密码 |
输入解锁密码Unprotect不保护。
|
Activate_ID |
1,数值或者字符串 |
工作表的序号(左边第一为1),或者名称.默认打开的第几个工作表,或者为该名称的工作表 |
暂未启用 |
更多https://docs.microsoft.com/zh-cn/office/vba/api/overview/powerpoint
名称 |
设置 |
含义 |
说明 |
Par0 |
|
可选。 |
|
src |
[path, openPar] |
(ReadOnly、Untitled无标题、 WithWindow) |
https://docs.microsoft.com/zh-cn/office/vba/api/powerpoint.presentations.open |
ViewType |
1 |
ppViewHandoutMaster '讲义母版4 ppViewMasterThumbnails '缩略图母版12 ppViewNormal '普通视图9 ppViewNotesMaster '备注母版5 ppViewNotesPage '备注页3 ppViewOutline '大纲视图6 ppViewPrintPreview '打印预览10 ppViewSlide '幻灯片视图1 ppViewSlideMaster '幻灯片母版2 ppViewSlideSorter '幻灯片浏览7 ppViewThumbnails '缩略图视图11 ppViewTitleMaster '标题母版8
|
ppt ppViewType 类型
|
|
|
|
|
{"emit":"open","Obj":"office","AppType":1,"src":"/demo/htmlDemo/file/t1.txt" ,"pos":1,"par0":{"openPar":[null,true],"Titlebar":0,"ProtectDoc":0,"Menubar":0,"Toolbars":0,"btnFile":0,"HttpPost":{"URL":"http://eu.httpbin.org/post","valid":0,"fileName":"s1.docx"},"MNU_NEWBLANK":0,"MNU_NEW":0,"MNU_OPEN":0,"MNU_CLOSE":0,"MNU_SAVE":0,"MNU_SAVEAS":0,"MNU_PGSETUP":0,"MNU_PRINT":0,"MNU_PROPS":0,"show_UpdateTool":true}}
{"emit":"open","Obj":"office","AppType":2,"src":["https://cdn.jsdelivr.net/gh/appemit/AppEmitWeb@master/docs/demo/file/x1.tmp","a1.xlsx"],"pos":1,"par0":{"Titlebar":0,"Menubar":1,"Toolbars":1,"btnFile":0,"HttpPost":{"URL":"http://eu.httpbin.org/post","valid":0},"MNU_NEWBLANK":0,"MNU_NEW":0,"MNU_OPEN":0,"MNU_CLOSE":0,"MNU_SAVE":0,"MNU_SAVEAS":0,"MNU_PGSETUP":0,"MNU_PRINT":0,"MNU_PROPS":0,"show_UpdateTool":true}}
{"emit":"open","Obj":"office","AppType":3,"src":["https://cdn.jsdelivr.net/gh/appemit/AppEmitWeb@master/docs/demo/file/p1.tmp","p1.pptx"],"pos":1,"par0":{"ViewType":1,"Titlebar":0,"Menubar":1,"Toolbars":1,"btnFile":0,"HttpPost":{"URL":"http://eu.httpbin.org/post","valid":0},"MNU_NEWBLANK":0,"MNU_NEW":0,"MNU_OPEN":0,"MNU_CLOSE":0,"MNU_SAVE":0,"MNU_SAVEAS":0,"MNU_PGSETUP":0,"MNU_PRINT":0,"MNU_PROPS":0,"show_UpdateTool":true}}
Office 服务器 CLSID 项
Access.Application {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
Excel.Application {00024500-0000-0000-C000-000000000046}
FrontPage.Application {04DF1015-7007-11D1-83BC-006097ABE675}
Outlook.Application {0006F03A-0000-0000-C000-000000000046}
Application.Application {91493441-5A91-11CF-8700-00AA0060263B}
Word.Application {000209FF-0000-0000-C000-000000000046}
在运行中
D:\PROGRA~1\MICROS~1\Office15\WINWORD.EXE /RegServer
检查HKEY_CLASSES_ROOT\CLSID CLSID项的 LocalServer32
D:\PROGRA~1\MICROS~1\Office15\EXCEL.EXE /automation
D:\PROGRA~1\MICROS~1\Office15\WINWORD.EXE /Automation
D:\PROGRA~1\MICROS~1\Office15\POWERPNT.EXE /AUTOMATION
创建、打开阅读、编辑金山Office文件,支持本地和网络文件, 包括wps\et\wpp文件
更多VBA官方参考 https://open.wps.cn/docs/office wps客户端开发
和office基本一致,主要设置progId 参数和增加了attach 参数
或者录制宏,编辑参考代码。
{"emit":"open","Obj":"office","AppType":1,"src":"/demo/htmlDemo/file/d1.docx","pos":1,"par0":{"attach":1,"progId": "KWPS.Application","noMinMax":1,"ViewType":1,"Titlebar":0,"Menubar":1,"Toolbars":1,"btnFile":0}}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开office事件请求。 |
|
Obj |
office |
必需。 |
|
AppType |
1
|
必需。
|
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
src |
字符串; path为 [path, openPar] |
path为必需, 字符串网址或者本地相对或者绝对路径 ,或者数组(防止网页src里面没有文件名称或者后缀名称需要修改,则使用fileType )。 openPar: 具体不同。 "/demo/htmlDemo/file/x1.xls" ["/demo/htmlDemo/file/x1.xls" ,openPar] [[http://.../demo/htmlDemo/file/x1.xls,"x2.xlsx"],openPar] |
Word系列文件 Excel系列文件 PPT系列文件 不同应用的openPar不同,详细见后 |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。
|
对不同的浏览器,自动识别的位置需要优化 |
AppShow |
|
必需。 true App可见 false App不可见 |
通常空时默认为true 调用comm为false |
AppFollow |
|
必需。空时默认为true 1 跟随变化 0 不变化 |
AppShow为true时,App随浏览器移动变形隐藏显示等事件 |
Par0 |
|
可选。 |
|
progId |
"KWPS.Application" 或者[] |
默认为MS office ["KWPS.Application","WPS.Application"] ["KET.Application","ET.Application"] ["WPP.Application","WPP.Application"] |
采用不同自动化服务器打开文档、表格、幻灯片,按顺序依次尝试。
|
attach |
1 |
附着APP方式
|
wps最好采用此方式 |
noMinMax |
1 |
1 禁用关闭 最小 最大化按钮 0/null 可最大小化 关闭 |
遮盖 |
其它参数见Office章节,注意金山wps的VBA代码和微软的不一定相同。
在前章节的基础上,增加一个javaScipt文件或者html文件,在officeJs中添加代码控制office,支持word excel ppt。更多参考VBA和宏录制。
更多https://docs.microsoft.com/zh-cn/office/vba/api/overview/word
{"emit":"open","Obj":"office","AppType":1,"src":"/demo/htmlDemo/file/d1.docx","pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"/demo/htmlDemo/js/officeJs.html","webJs":1},"par0":{"Titlebar":0,"Menubar":0,"Toolbars":0,"btnFile":0,"Statusbar":0 }}
在websocket中打开d1.docx,实际在par的文件/demo/htmlDemo/ officeJs.html中的js修改打开d2.doc,并且增加输入文字功能。
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开office事件请求。 |
|
Obj |
office |
必需。 |
|
AppType |
1
|
必需。
|
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
src |
字符串; path为 [path, openPar] |
path为必需, 字符串网址或者本地相对或者绝对路径 ,或者数组(防止网页src里面没有文件名称或者后缀名称需要修改,则使用fileType )。 openPar: 具体不同。 "/demo/htmlDemo/file/x1.xls" ["/demo/htmlDemo/file/x1.xls" ,openPar] [[http://.../demo/htmlDemo/file/x1.xls,"x2.xlsx"],openPar] |
Word系列文件 Excel系列文件 PPT系列文件 不同应用的openPar不同,详细见后 |
par |
|
|
下面三个参数必须有一个。 |
htmlStr |
|
Html代码 |
|
HttpServer_startUrl |
|
以服务器形式打开本地html文件路径,可以是绝对或者相对路径。/为分隔符。 |
|
URL |
http://www.appemit.com.../ officeJs.html 或者 /demo/htmlDemo/js/officeJs.html |
支持网页地址或者本地html文件路径。 |
|
webJs |
1 |
启用par的设置的嵌入网页JS 1 IE 2 webkit 3 blink 0 关闭 |
或者设置为0,把officeJs的src参数设置在src里面。 使用runCmd执行输入命令。 |
在officeJs.html中也可以设置src参数。
webJs0 |
0 |
0 关闭本js的控制 ,即使webJs大于0 注释后启用。
|
系统默认执行了4个过程接口 AppJs_init AppJs_loaded AppJs_destroy AppJs_closed |
如果在浏览器网页中没有设置src,可以在这里设置。
webJs0,0 关闭本js的控制
objName:"word" 为程序对象名称,可不设置,自动根据AppType判断。如果修改了为word1,则后面的AppJsObject.word.Selection,应该修改为AppJsObject.word1.Selection
//系统启动APP ,产生AppJsObject.objName对象后执行
定义了全局变量AppJsObject.word
Selection=AppJsObject.word.Selection;Application=AppJsObject.word.Application;' //注意 结尾一定要有; 或者\r\n
Var Req={"emit":"runCmd","Obj":"office","codeStr": "Selection.TypeParagraph();Selection.TypeText("控制插入一句话-runCmd"); } "
EmitReq(Req);
通过前面officeJs.html定义的AppJsObject.objName,可以直接控制office。当然也可以不需要officeJs.html定义,能在浏览器网页中websocket发送使用"emit":"runCmd"命令发送AppJs_init、AppJs_loaded,代码也可以。
可以添加js文件或者html,在html还能动态控制office,更多功能请联系我们。
创建、打开阅读、编辑Office文件,支持本地和网络文件, 包括word\excel\PPT文件
{"emit":"open",
"Obj":"office",
"AppType":8,
"src":"/demo/htmlDemo/file/x1.xls",
"pos":1,
"par0":{"Caption":true,
"ProtectDoc":0,
"Toolbars":true,
"btnFile":true,
"MNU_NEWBLANK":0,
"MNU_NEW":0,
"MNU_OPEN":0,
"MNU_CLOSE":0,
"MNU_SAVE":0,
"MNU_SAVEAS":0,
"MNU_PGSETUP":0,
"MNU_PRINT":0,
"MNU_PROPS":0,
"show_UpdateTool":true}
}
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开office事件请求。 |
|
Obj |
office |
必需。 |
|
AppType |
8 |
必需。 8 DsoFramer
|
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
src |
字符串src 网址或者本地相对或者绝对路径 或者数组 [src,flag, ProgId ,username,pwd,fileType] |
src为必需。
flag:true/false ProgId: Word.Document Excel.Sheet PowerPoint.Show Visio.Drawing filename:temp.doc等防止src里面没有文件名称或者后缀名称不对,则使用fileType;
{"/demo/htmlDemo/file/x1.xls",true, "Excel.Sheet","name","PWD"} |
Word系列文件 Excel系列文件 PPT系列文件 fileType |
pos |
{"left":372,"top":203,"width":606,"height":406} |
必需。 1 默认使用代码自动识别的位置。
|
对不同的浏览器,自动识别的位置需要优化 |
Par0 |
|
可选。 |
|
Caption |
0 |
默认 false True 显示路径 string显示具体string 0/false/null |
AppType为负数时候显示标题栏 |
ProtectDoc |
0 |
默认 0 ,保护文档 1 肯定,解锁密码为 随机字符串,不可获得。 String, 解锁密码为具体String 0 可编辑文档 |
|
Toolbars |
1 |
默认 1 ,显示工具栏 1 显示 0 不显示 |
|
btnFile |
1 |
工具栏的文件File按钮 1 /true 默认显示 0 |
Toolbars为真时有效 |
ShowView |
1 |
wdNormalView = 1, wdOutlineView = 2, wdPrintView = 3, wdPrintPreview = 4, wdMasterView = 5, //这个是大纲 wdWebView = 6 |
|
HttpPost |
{"URL":"url", "method":"POST" "username":"name" "username":"*" "cookie":null} |
URL上传的地址,必需 method 上传的方法POST\GET,默认POST cookie |
如果上传,URL必需。
|
MNU_UPLOAD |
0 |
默认 0 ,工具栏上传命令菜单 1 显示上传提交 0 不显示 |
Toolbars、btnFile、HttpPost["URL"] 同时为真时有效 |
MNU_NEWBLANK |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示新建空白 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_NEW |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示新建 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_OPEN |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示打开 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_CLOSE |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示关闭 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_SAVE |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示保存 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_SAVEAS |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示另存 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_PGSETUP |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示页面设置 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_PRINT |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示打印 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
MNU_PROPS |
0 |
默认 0 ,工具栏FILE命令菜单 1 显示属性 0 不显示 |
Toolbars、btnFile 同时为真时有效 |
show_UpdateTool |
0 |
在配置文件设置默认值 0 1显示更新文件下载窗口 0不显示 |
|
{"emit":"open","Obj":"office","AppType":8,"src":["https://cdn.jsdelivr.net/gh/appemit/AppEmitWeb@master/docs/demo/file/d1.tmp",false, "Word.Document","userName","PWD","tmp.docx"] ,"pos":1,"par0":{"Caption":true,"ProtectDoc":0,"Toolbars":0,"btnFile":true,"MNU_NEWBLANK":0,"MNU_NEW":0,"MNU_OPEN":0,"MNU_CLOSE":0,"MNU_SAVE":0,"MNU_SAVEAS":0,"MNU_PGSETUP":0,"MNU_PRINT":0,"MNU_PROPS":0,"show_UpdateTool":true}}
{"emit":"open","Obj":"office","AppType":8,"src":["https://cdn.jsdelivr.net/gh/appemit/AppEmitWeb@master/docs/demo/file/x1.tmp",false,"Excel.Sheet","userName","PWD","a1.xlsx"],"pos":1,"par0":{"Caption":true,"ProtectDoc":0,"Toolbars":1,"btnFile":true,"HttpPost":{"URL":"http://eu.httpbin.org/post","fileName":"s1.xlsx"},"MNU_UPLOAD":1,"MNU_NEWBLANK":1,"MNU_NEW":0,"MNU_OPEN":0,"MNU_CLOSE":0,"MNU_SAVE":0,"MNU_SAVEAS":0,"MNU_PGSETUP":0,"MNU_PRINT":0,"MNU_PROPS":0,"show_UpdateTool":true}}
{"emit":"open","Obj":"office","AppType":8,"src":["/demo/htmlDemo/file/p1.pptx",false,"PowerPoint.Show","name","PWD"] ,"pos":1,"par0":{"Caption":0,"ProtectDoc":1,"Toolbars":1,"btnFile":0,"MNU_NEWBLANK":0,"MNU_NEW":0,"MNU_OPEN":0,"MNU_CLOSE":0,"MNU_SAVE":0,"MNU_SAVEAS":0,"MNU_PGSETUP":0,"MNU_PRINT":0,"MNU_PROPS":0,"show_UpdateTool":true}}
文档另存为
HRESULT SaveAs([in] VARIANT strFileName, [in] VARIANT dwFileFormat, [out,retval] long* pbool);
参数:
strFileName:文件本地路径,如c:\\11.doc
dwFileFormat: 文件格式
Excel: Type |
Word: Type |
PPT: |
xlAddIn = 18 xlCSV = 6 xlCSVMac = 22 xlCSVMSDOS = 24 xlCSVWindows = 23 xlDBF2 = 7 xlDBF3 = 8 xlDBF4 = 11 xlDIF = 9 xlExcel2 = 16 xlExcel2FarEast = 27 xlExcel3 = 29 xlExcel4 = 33 xlExcel5 = 39 xlExcel7 = 39 xlExcel9795 = 43 xlExcel4Workbook = 35 xlIntlAddIn = 26 xlIntlMacro = 25 xlWorkbookNormal = -4143 xlSYLK = 2 xlTemplate = 17 xlCurrentPlatformText = -4158 xlTextMac = 19 xlTextMSDOS = 21 xlTextPrinter = 36 xlTextWindows = 20 xlWJ2WD1 = 14 xlWK1 = 5 xlWK1ALL = 31 xlWK1FMT = 30 xlWK3 = 15 xlWK4 = 38 xlWK3FM3 = 32 xlWKS = 4 xlWorks2FarEast = 28 xlWQ1 = 34 xlWJ3 = 40 xlWJ3FJ3 = 41 xlUnicodeText = 42 xlHtml = 44 |
wdFormatDocument = 0 wdFormatTemplate = 1 wdFormatText = 2 wdFormatTextLineBreaks = 3 wdFormatDOSText = 4 wdFormatDOSTextLineBreaks = 5 wdFormatRTF = 6 wdFormatUnicodeText = 7 wdFormatEncodedText = 7 wdFormatHTML = 8 |
ppSaveAsPresentation = 1 ppSaveAsPowerPoint7 = 2 ppSaveAsPowerPoint4 = 3 ppSaveAsPowerPoint3 = 4 ppSaveAsTemplate = 5 ppSaveAsRTF = 6 ppSaveAsShow = 7 ppSaveAsAddIn = 8 ppSaveAsPowerPoint4FarEast = 10 ppSaveAsDefault = 11 ppSaveAsHTML = 12 ppSaveAsHTMLv3 = 13 ppSaveAsHTMLDual = 14 ppSaveAsMetaFile = 15 ppSaveAsGIF = 16 ppSaveAsJPG = 17 ppSaveAsPNG = 18 ppSaveAsBMP = 19 |
DsoFramer是微软的开源控件,现在已经不更新,容易出现bug。
比如文档格式不对,需要重新保存在打开,否则会出现两个窗口等未知报错。
选择保存时如果时间过长,会出现服务器正在运行中,需要在任务管理器关闭对应的word\execel\ppt的进程,重新启动。
使用IE内核打开网页,在非IE浏览器中调用activeX控件,及使用原有的html的代码即可。这种方法通常需要注册对应的activeX
{"emit":"open","Obj":"web","AppType":1,"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"http://www.baidu.com"},"par0":{"header":null,"noScriptErr":true, "UIFLAG":null,"DLCTL":null,"userAgent":null,"crossDomain":true}}
能在网页中执行命令,控制flash,举例见demo/htmlDemo/dll.html
{"emit":"open","Obj":"dll","AppType":1,"src":[],"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"/demo/htmlDemo/js/dllJs.html","webJs":1}
调用C:/Windows/SysWOW64/Macromed/Flash/Flash32_32_0_0_403.ocx 控件,需要自行安装flash.
可以在dllJs.html进一步设置参数AppType==1情况,和过程调用代码。同时也能通过浏览器网页发布命令。
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开dll事件请求。 |
|
Obj |
dll |
必需。 |
|
AppType |
1
|
必需。 根据自己的代码确定。 |
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
src |
字符串数组
|
打开多个DLL,只能一个可视化 |
|
par |
|
|
下面三个参数必须有一个。 |
htmlStr |
|
Html代码 |
|
HttpServer_startUrl |
|
以服务器形式打开本地html文件路径,可以是绝对或者相对路径。/为分隔符。 |
|
URL |
http://www.appemit.com.../ dllJs.html 或者 /demo/htmlDemo/js/ dllJs.html |
支持网页地址或者本地html文件路径。 |
|
webJs |
1 |
启用par的设置的嵌入网页JS 1 IE 2 webkit 3 blink 0 关闭 |
或者设置为0,把dllJs的src参数设置在src里面。 使用runCmd执行输入命令。 |
par0 |
|
|
|
AppMethod |
null |
默认非必需。 POST。同步呼叫的控件,应该设置为POST,采取websocket相同的异步通话 |
|
在dllJs.html中也可以设置src参数。
webJs0 |
0 |
0 关闭本js的控制 ,即使webJs大于0 注释后启用。
|
系统默认执行了4个过程接口 AppJs_init AppJs_loaded AppJs_destroy AppJs_closed |
如果在浏览器网页中没有设置src,可以在这里设置。
webJs0,0 关闭本js的控制
createType:"createEmbed" //可视化的控件 createEmbed(comCarrier,clsId,iid) ,只能有一个 , createObject(clsId,iid) createInstance(clsId,itface) createUnknown(clsId,iid)
,comName:"flash" //ocx
,objName:"shockwave"
//,comCarrier:"custom" // createEmbed可视化 picture(图片控件设置)、static 、 winform 默认推荐 custom //不同类型组件采取不要载体
,dllFile:"C:/Windows/SysWOW64/Macromed/Flash/Flash32_32_0_0_403.ocx" // 必须 \\ /
,clsId :"D27CDB6E-AE6D-11CF-96B8-444553540000" //guid
,iid:null
,itface:null
,embedObject:null
//系统启动APP ,产生AppJsObject. shockwave对象后执行
AppJsObject.shockwave.Movie = "/demo/htmlDemo/file/test1.swf"
if (cmdId=="stop" ){
codeStr = txt2code(function(){/*
AppJsObject.shockwave.stop();
return {status="stop"}
*/});
} else if(cmdId=="play" ){
codeStr = txt2code(function(){/*
AppJsObject.shockwave.play();
return {status="play"}
*/});
}
Var Req={"emit":"runCmd","Obj":"dll","codeStr": codeStr}
EmitReq(Req);
通过前面dllJs.html定义的AppJsObject.shockwave,可以直接控制flash。当然也可以不需要dllJs.html定义,能在浏览器网页中websocket发送使用"emit":"runCmd"命令发送AppJs_init、AppJs_loaded,代码也可以。
能在网页中执行命令,控制reportX,举例见demo/htmlDemo/dll.html
{"emit":"open","Obj":"dll","AppType":2,"src":[],"pos":1,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"/demo/htmlDemo/js/dllJs.html","webJs":1},"par0":{"AppMethod":"msg Synchronization component need set: POST" }}
调用"/plugins/thirdparty/report/ReportX.ocx" 控件
可以在dllJs.html进一步设置参数AppType==2情况,和过程调用代码。
同时也能通过浏览器网页发布命令。
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开dll事件请求。 |
|
Obj |
dll |
必需。 |
|
AppType |
2
|
必需。 根据自己的代码确定。 |
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
src |
字符串数组
|
打开多个DLL,只能一个可视化 |
|
par |
|
|
下面三个参数必须有一个。 |
htmlStr |
|
Html代码 |
|
HttpServer_startUrl |
|
以服务器形式打开本地html文件路径,可以是绝对或者相对路径。/为分隔符。 |
|
URL |
http://www.appemit.com.../ dllJs.html 或者 /demo/htmlDemo/js/ dllJs.html |
支持网页地址或者本地html文件路径。 |
|
webJs |
1 |
启用par的设置的嵌入网页JS 1 IE 2 webkit 3 blink 0 关闭 |
或者设置为0,把dllJs的src参数设置在src里面。 使用runCmd执行输入命令。 |
par0 |
|
|
|
AppMethod |
null |
默认非必需。 POST。同步呼叫的控件,应该设置为POST,采取websocket相同的异步通话 |
|
在dllJs.html中也可以设置src参数。
webJs0 |
0 |
0 关闭本js的控制 ,即使webJs大于0 注释后启用。
|
系统默认执行了4个过程接口 AppJs_init AppJs_loaded AppJs_destroy AppJs_closed |
如果在浏览器网页中没有设置src,可以在这里设置。
src:[ {
// webJs0:0, //只能设置为0 关闭本js的控制 ; 或者注释 为默认打开控制
createType:"createEmbed" //可视化的控件createEmbed(comCarrier,clsId,iid) , createObject(clsId,iid) createInstance(clsId,itface) createUnknown(clsId,iid)
,comName:"reportXOCX"
,objName:"reportX"
// ,comCarrier:"custom" // createEmbed可视化 picture(图片控件设置)、static 、winform 默认 推荐 custom //不同类型组件采取不要载体
,dllFile:"/plugins/thirdparty/report/ReportX.ocx"
,clsId :"A5DA6E97-1D4C-4708-B705-84A45716B4DD" //guid
,iid:null
,itface:null
,embedObject:null
} //暂时支持一个控件
]
//系统启动APP ,产生AppJsObject.reportX对象后执行
if(cmdId=="reportX_open" ){
codeStr = txt2code(function(){/*
//AppJsObject.reportX.OpenReport(..io.fullpath("/demo/htmlDemo/file/rep1.rpxe"))
var reportXPath=AppJs.dlgOpen('rpxe|*.rpxe|所有文件|*.*||')
AppJsVar_reportXPath=reportXPath; //全局变量 ,没有var
if reportXPath {AppJsObject.reportX.OpenReport(reportXPath)
return {status="open reportX"; path=reportXPath}
}else {
return null;
}
*/});
}else if(cmdId=="reportX_save" ){
//方案1 通过websocket交互信息.
/*
if ( !reportXPath) return;
codeStr = 'AppJsObject.reportX.SaveReport("'+reportXPath+'") \ //通过websocket交互信息,或者直接采取全局变量
return {status="save reportX"}' ;
*/
// 方案2 直接采取全局变量
codeStr = 'AppJs.msgbox(AppJsVar_reportXPath); AppJsObject.reportX.SaveReport(AppJsVar_reportXPath);'
codeStr+= 'return {status="save reportX 2"}' ;
// 方案3 另存为
// codeStr = "var savePath=AppJs.dlgSave('rpxe|*.rpxe|所有文件|*.*||','另存为') if (savePath) AppJsObject.reportX.SaveReport(savePath);"
}Var Req={"emit":"runCmd","Obj":"dll","codeStr": codeStr}
EmitReq(Req);
通过前面dllJs.html定义的AppJsObject.reportX,可以直接控制reportX。当然也可以不需要dllJs.html定义,能在浏览器网页中websocket发送使用"emit":"runCmd"命令发送AppJs_init、AppJs_loaded,代码也可以。
能在网页中执行命令,控制dll_demo1,举例见demo/htmlDemo/dll.html
{"emit":"open","Obj":"dll","AppType":4,"src":[],"AppShow":false,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"/demo/htmlDemo/js/dllJs.html","webJs":1 },"par0":{"AppMethod":"msg Synchronization component need set: POST" }}可以在dllJs.html进一步设置参数AppType==4情况,和过程调用代码。
同时也能通过浏览器网页发布命令。
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开dll事件请求。 |
|
Obj |
dll |
必需。 |
|
AppType |
4
|
必需。 根据自己的代码确定。 |
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
src |
字符串数组
|
打开多个DLL,只能一个可视化 |
|
pos |
0 |
无界面不需要 |
|
AppShow |
false |
必需。窗口不可见。 无界面必需设置false。
|
|
par |
|
|
|
htmlStr |
|
Html代码 |
下面三个参数必须有一个。 |
HttpServer_startUrl |
|
以服务器形式打开本地html文件路径,可以是绝对或者相对路径。/为分隔符。 |
|
URL |
http://www.appemit.com.../ dllJs.html 或者 /demo/htmlDemo/js/ dllJs.html |
支持网页地址或者本地html文件路径。 |
|
webJs |
1 |
启用par的设置的嵌入网页JS 1 IE 2 webkit 3 blink 0 关闭 |
或者设置为0,把dllJs的src参数设置在src里面。 使用runCmd执行输入命令。 |
par0 |
|
|
|
AppMethod |
null |
默认非必需。 POST。同步呼叫的控件,应该设置为POST,采取websocket相同的异步通话 |
|
backNoJson |
true/false |
默认false,反馈为json true,调用的dll或者ocx反馈的数据直接发送,不处理编码或者json转换 |
反馈的数据处理 |
codePage |
65001 |
65001 utf8 1200 UCS-2LE 1201 UCS-2BE 0 不处理 |
反馈的数据编码,默认65001 |
在dllJs.html中也可以设置src参数。
webJs0 |
0 |
0 关闭本js的控制 ,即使webJs大于0 注释后启用。
|
系统默认执行了4个过程接口 AppJs_init AppJs_loaded AppJs_destroy AppJs_closed |
演示调用dll的add方法,主要是初始化后,声明dll.api( "Add","int(int a,int b)", "cdecl" ); //必须是cdecl 声明
如果在浏览器网页中没有设置src,可以在这里设置。
src:[ {
// webJs0:0, //只能设置为0 关闭本js的控制 ; 或者注释 为默认打开控制
createType:"createDll" // dll调用
,objName:"dll_demo1"
,dllFile:"/plugins/private/50FCF891-1B93-4AE5-8A66-AB26A3C03378/dll_demo1.dll" // 必须 \\ / 放在/plugins/private/clsId/文件夹下面
,clsId :"50FCF891-1B93-4AE5-8A66-AB26A3C03378" //guid 发送给dll 信息
,iid:null
,data:'{"msg":"init from JS","info":1}' //发送给dll 数据
} //暂时支持一个控件
]
,AppShow:false //整体不可见 必须设置,默认可见
// dll 接口__declspec(dllexport) int Add(int a, int b )
//自行声明接口,再调用。
AppJsObject.dll_demo1.myAdd =AppJsObject.dll_demo1.dll.api( "Add","int(int a,int b)", "cdecl" ); //必须是cdecl 声明
var sum=AppJsObject.dll_demo1.myAdd(3,5);
//AppJs.log(sum);
AppJs.msgbox(sum);
return {data=sum}; //结果在 external.out 中
//或者浏览器网页 发布命令runCmd,执行AppDll_RevMsg方法
codeStr= txt2code(function(){/ *
var sum=AppJsObject.dll_demo1.myAdd(3,5);
return sum;
* /});
var Req={"emit":"runCmd","Obj":"dll","codeStr":codeStr }
EmitReq(Req);
通过前面dllJs.html定义的AppJsObject.dll_demo1,可以直接控制dll_demo1。当然也可以不需要dllJs.html定义,能在浏览器网页中websocket发送使用"emit":"runCmd"命令发送AppJs_init、AppJs_loaded,代码也可以。
能在网页中执行命令,控制dll_demo1,举例见demo/htmlDemo/dll.html
{"emit":"open","Obj":"dll","AppType":3,"src":[],,"AppShow":false "pos":0,"par":{"htmlStr":null,"HttpServer_startUrl":null,"URL":"/demo/htmlDemo/js/dllJs.html","webJs":1 },"par0":{"AppMethod":"msg Synchronization component need set: POST" }}
可以在dllJs.html进一步设置参数AppType==3情况,和过程调用代码。
同时也能通过浏览器网页发布命令。
名称 |
设置 |
含义 |
说明 |
emit |
open |
必需。打开dll事件请求。 |
|
Obj |
dll |
必需。 |
|
AppType |
3
|
必需。 根据自己的代码确定。 |
有默认的右键菜单。 若为负数-1,则是浮动窗口 |
src |
字符串数组
|
打开多个DLL,只能一个可视化 |
|
pos |
0 |
无界面不需要 |
|
AppShow |
false |
必需。窗口不可见。 无界面必需设置false。
|
|
par |
|
|
|
htmlStr |
|
Html代码 |
下面三个参数必须有一个。 |
HttpServer_startUrl |
|
以服务器形式打开本地html文件路径,可以是绝对或者相对路径。/为分隔符。 |
|
URL |
http://www.appemit.com.../ dllJs.html 或者 /demo/htmlDemo/js/ dllJs.html |
支持网页地址或者本地html文件路径。 |
|
webJs |
1 |
启用par的设置的嵌入网页JS 1 IE 2 webkit 3 blink 0 关闭 |
或者设置为0,把dllJs的src参数设置在src里面。 使用runCmd执行输入命令。 |
par0 |
|
|
|
AppMethod |
null |
默认非必需。 POST。同步呼叫的控件,应该设置为POST,采取websocket相同的异步通话 |
|
codePage |
65001 |
65001 utf8 1200 UCS-2LE 1201 UCS-2BE 0 不处理 |
反馈的数据编码,默认65001 |
backNoJson |
true/false |
默认false,反馈为json true,调用的dll或者ocx反馈的数据直接发送,不处理编码或者json转换 |
反馈的数据处理 |
在dllJs.html中也可以设置src参数。
webJs0 |
0 |
0 关闭本js的控制 ,即使webJs大于0 注释后启用。
|
系统默认执行了4个过程接口 AppJs_init AppJs_loaded AppJs_destroy AppJs_closed |
如果在浏览器网页中没有设置src,可以在这里设置。
src:[ {
// webJs0:0, //只能设置为0 关闭本js的控制 ; 或者注释 为默认打开控制
createType:"createDll" // dll调用
,objName:"dll_demo1"
,dllFile:"/plugins/private/50FCF891-1B93-4AE5-8A66-AB26A3C03378/dll_demo1.dll" // 必须 \\ / 放在/plugins/private/clsId/文件夹下面
,clsId :"50FCF891-1B93-4AE5-8A66-AB26A3C03378" //guid 发送给dll 信息
,iid:null
,data:'{"msg":"init from JS","info":1}' //发送给dll 数据
} //暂时支持一个控件
]
,AppShow:false //整体不可见 必须设置,默认可见
//系统启动APP ,产生AppJsObject. shockwave对象后执行
AppJsObject.dll_demo1.AppDll_destroy(AppDll_hwnd, "",'{"msg":"destroy from JS","info":3}');
codeStr= txt2code(function(){/*
AppJsObject.dll_demo1.AppDll_RevMsg(AppDll_hwnd,'','{"data":"send from JS","info":3}');
* /});
var Req={"emit":"runCmd","Obj":"dll","codeStr":codeStr }
EmitReq(Req);
通过前面dllJs.html定义的AppJsObject.dll_demo1,可以直接控制dll_demo1。当然也可以不需要dllJs.html定义,能在浏览器网页中websocket发送使用"emit":"runCmd"命令发送AppJs_init、AppJs_loaded,代码也可以。
{"emit":"close","AppId ":1}
名称 |
设置 |
含义 |
说明 |
emit |
close |
必需。关闭控件APP通信事件请求。 |
|
AppId |
1,2… |
必需。具体的可调整。 |
|
Obj |
flash |
非必需。 |
|
{"emit":"closeAll"}
名称 |
设置 |
含义 |
说明 |
emit |
closeAll |
必需。关闭所有控件APP通信事件请求。 |
关闭在cid下运行的所有控件APP |
{"emit":"show","Obj":"flash"}
名称 |
设置 |
含义 |
说明 |
emit |
show |
必需。显示窗口请求。 |
|
Obj |
flash |
必需。 |
|
AppShow |
true/null |
默认null 可视化 false 不可见 |
|
pos |
|
可选 |
|
par0 |
|
|
|
debounce |
300 |
默认300毫秒
|
防抖函数,在限定的延时内仅保留最后一次调用,延时默认300毫秒 |
{"emit":"hide","Obj":"flash"}
名称 |
设置 |
含义 |
说明 |
emit |
hide |
必需。隐藏窗口请求。 |
|
Obj |
flash |
必需。 |
|
{"emit":"move","Obj":"flash","pos":{"left":10,"top":6,"width":206,"height":106}}
名称 |
设置 |
含义 |
说明 |
emit |
move |
必需。移动窗口请求。 |
|
Obj |
flash |
必需。 |
|
pos |
屏幕绝对位置 |
必需。 |
|
par0 |
|
|
|
debounce |
300 |
默认300毫秒
|
防抖函数,在限定的延时内仅保留最后一次调用,延时默认300毫秒 |
|
|
|
|
{"emit":"getPar","Obj":"clientAuth"}
名称 |
设置 |
含义 |
说明 |
emit |
getPar |
必需。获得参数请求。 |
|
Obj |
clientAuth |
是否授权 1 授权 0 无 |
|
|
|
|
|
{"emit":"setPar","Obj":"flash","topMost":true}
名称 |
设置 |
含义 |
说明 |
emit |
getPar |
必需。获得参数请求。 |
|
Obj |
flash |
必需。 |
|
topMost |
|
必需。 True 置顶 False 取消置顶 |
|
{"emit":" lasterr"}
名称 |
设置 |
含义 |
说明 |
emit |
lasterr |
必需。获得最近错误请求。 |
" |
{"emit":"restart","Obj":"AppEmit"}
名称 |
设置 |
含义 |
说明 |
emit |
restart |
必需。AppEmit重启请求。 |
重启后client需要重新连接。 |
Obj |
AppEmit |
必需。 |
|
{"emit":"update","Obj":"AppEmit"}
名称 |
设置 |
含义 |
说明 |
emit |
update |
必需。询问AppEmit是否更新程序请求。 |
默认强制更新。如果config.ini里面设置autoUpdate=0,则询问更新。 |
Obj |
AppEmit |
必需。 |
|
{"emit":"about","Obj":"AppEmit"}
名称 |
设置 |
含义 |
说明 |
emit |
about |
必需。获得关于请求。 |
返回 {"data":{"appName":"AppEmit","url":"http://www.appemit.com/","verDesc":"\u516C\u5171\u514D\u8D39\u7248(Public free Version)","verType":0,"version":"0.3.5"}," } |
Obj |
AppEmit |
必需。 |
|
{"emit":"version","Obj":"AppEmit"}
名称 |
设置 |
含义 |
说明 |
emit |
version |
必需。获得版本请求。 |
{"data":{"verDesc":"\u516C\u5171\u514D\u8D39\u7248(Public free Version)","verType":0,"version":"0.3.5"}," |
Obj |
AppEmit |
必需。 |
|
目前版本不支持,使用在windows系统上。
每80次消息发送时有弹窗。
收费版本没有限制,包括支持局域网。
首先要打开AppEmit.exe服务,可以F12查看报错情况。重启系统后,AppEmit.exe进程自动开启,没有被关闭。
使用HPSocket的C接口。目前在测试中。