插件编写规范
支持生成dll文件做插件调用
引用
WorkerInterface.dll
文件,文件在GE-Worker安装根目录可以找到继承 WorkerInterface.IBase 并实现其中的 GetConfig 和 ExecMethod 方法。
GetConfig用于获取参数配置项,用于生成用户输入参数界面
如下图:
GetConfig方法说明如下:
//根据TagName获取配置参数,如GetConfig(‘Win32API.GetControlText‘)
string GetConfig(string TagName);ExecMethod用于执行具体的某个方法
ExecMethod方法说明如下:
//targetEle 界面元素,元素设置中不选择捕获元素可设置 null
//setting 主界面元素设置确认后保存的 json 串,格式:FuncName 方法名,Params 方法对应参数数据(主界面参数设置中各参数的输入值)
//opData 全局变量数据,流程运行时所有的变量
object ExecMethod(AutomationElement targetEle, string setting, Dictionary<string, object> opData);在GE-Worker安装目录下Extension文件夹下创建一个文件夹(名称自定义),然后把生成的dll放在该文件夹下,重启GE-Worker,在
动作面板
->扩展插件
查看是否加载成功,如下图:GetConfig返回值说明
返回值
{
"ParentName":"WordToOffice",
"ParentText":"Word 操作",
"item":[
{
"Name":"WordToOffice.SaveAs","Text":"另存为","Tag":
{
"elePicker":false,"setting":
[
{"label":"文件路径","key":"FilePath","type":"openDialog"},
{"label":"文件名","key":"FileName","type":"textbox"}
]
}
}
]
}名称 说明 ParentName 父类 ParentText 父类名称(插件名称) item 方法名及参数信息 Name 父类名.方法名。执行时会先查找插件中的类然后执行对应的方法 Text 方法名称 Tag 界面树节点绑定数据 elePicker 是否选择界面元素,是 true 否 false setting 方法中参数值对应格式设置 label 参数名称 key 参数 type 参数设置格式,combobox下拉列表、openDialog 选择文件夹、fileDialog 选择文件、saveDialog 保存文件、textbox 输入框 options 下拉列表对应项 filter 打开或保存文件格式
提示
示例源码如下所示
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Automation;
using WorkerInterface;
namespace Win32API
{
public class Win32API : IBase
{
public object ExecMethod(AutomationElement targetEle, string setting, Dictionary<string, object> opData)
{
string result = "";
try
{
JObject jobj = JObject.Parse(setting);
string FuncName = jobj["FuncName"].ToString();//方法名
dynamic ParamsList = JsonConvert.DeserializeObject(jobj["Params"].ToString());//用户选的参数
string hWndStr = ParamsList["hwnd"].ToString();
switch (FuncName)
{
case "GetControlText":
return GetControlText(hWndStr);
case "GetControlText2":
return GetControlText2(hWndStr);
}
}
catch (Exception ex)
{
throw ex;
}
return result;
}
public string GetConfig(string TagName)
{
string config = "";
switch (TagName)
{
case "GetControlText":
config = "{\"ParentName\":\"Win32API操作\",\"ParentText\":\"Win32API\",\"item\":[{\"Name\":\"Win32API.GetControlText\",\"Text\":\"按句柄获取文本\",\"ExportResult\":true,\"Tag\":{\"elePicker\":false,\"setting\":[{\"label\":\"句柄\",\"key\":\"hwnd\",\"type\":\"textbox\",\"emptyVerify\":true}]}}]}";
break;
case "GetControlText2"
config = "{\"ParentName\":\"Win32API操作\",\"ParentText\":\"Win32API\",\"item\":[{\"Name\":\"Win32API.GetControlText\",\"Text\":\"按句柄获取文本\",\"ExportResult\":true,\"Tag\":{\"elePicker\":false,\"setting\":[{\"label\":\"句柄\",\"key\":\"hwnd\",\"type\":\"textbox\",\"emptyVerify\":true}]}}]}";
break;
}
return config;
}
public string GetControlText(string hWndStr)
{
/// TODO something
return '';
}
public string GetControlText2(string hWndStr)
{
/// TODO something
return '';
}
}
}