跳到主要内容

插件编写规范

支持生成dll文件做插件调用

  1. 引用WorkerInterface.dll文件,文件在GE-Worker安装根目录可以找到

  2. 继承 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);

  3. 在GE-Worker安装目录下Extension文件夹下创建一个文件夹(名称自定义),然后把生成的dll放在该文件夹下,重启GE-Worker,在动作面板->扩展插件查看是否加载成功,如下图:

    动作面板

  4. 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 '';
}
}
}