Пример плагина (исходники) можно скачать отсюда : http://humanemulator.net/Plugins/Plugin_Sample.zip
Что такое плагин для Human Emulator CEF?
Плагин это возможность расширения функционала Human Emulator CEF с помощью dll.
Как это работает?
На данный момент в папке с программой есть папка Plugins, в которой в свою очередь находиться папка XHE. В этой папке находятся плагины, которые расширяют функционал самой программы. ТО есть для того что бы добавить ваш плагин в программу вам нужно создать в папке Plugins/XHE/ папку для вашего плагина и скопировать туда ваш dll. При этом название вашей папки появиться в меню плагины и при нажатии на этот пункт меню вы сможете запускать свой плагин. Но это при условии что ваш плагин имеет интерфейсную часть, если плагин выполняет только команды, то он не появиться в меню плагины. В таком случае для проверки подключения такого плагина, надо просто вызвать ваши команды если они работают, то всё отлично. Но о плагинах, которые содержат только команды поговорим позже.
Что нужно для создания своего плагина?
Вам нужно знание языка C#, потому как плагины создаются на этом языке и среда разработки. Для возможности подключения плагина к программе нужно добавить в свой проект компонент XHEPluginsCommon.dll и сделать определение функций этого компонента в своём проекте. В примере по ссылке выше это реализовано следующим образом:
/// <summary> /// плагин объекта выполнения команд SampleXHEObject /// </summary> public class SampleXHEObjectPlugin : Object, IPlugin { #region информация для хумана /// <summary> /// имя плагина /// </summary> string IPlugin.GetFullName(string language) { return "SampleXHEObject"; } /// <summary> /// версия плагина /// </summary> string IPlugin.GetVersion(string language) { return "1.1"; } /// <summary> /// имя плагина (если исполняемый палгин - то имя объекта) /// </summary> string IPlugin.GetAuthor(string language) { return "XHE"; } /// <summary> /// показываемое имя плагина /// </summary> string IPlugin.GetDisplayName(string language) { return "Sample XHE Plugin"; } /// <summary> /// описание плагина /// </summary> string IPlugin.GetDescription(string language) { return "Desciption of Sample XHE Plugin"; } /// <summary> /// категория плагина /// </summary> string IPlugin.GetCategory(string language) { return "Samples"; } /// <summary> /// подкатегория плагина /// </summary> string IPlugin.GetSubCategory(string language) { return ""; } /// <summary> /// флаги содержимого плагина /// (0 бит - плагин поддерживает выполнение команд ) /// (1 бит - плагин содержит диалог ) /// (2 бит - плагин содержит докующуюся панель ) /// </summary> int IPlugin.PluginContentFlags { get { return 3; } } #endregion #region инициализация /// <summary> /// барузер (задается в XHE) /// </summary> IPluginConnector _Connector = null; /// <summary> /// инициализация /// </summary> /// <param name="browser"></param> void IPlugin.Init(IPluginConnector connector) { _Connector = connector; } #endregion #region выполнение команд // public static string aNotFound = "command not found"; // тестовая команда string test_command(string param1,string param2) { return "test command : praam1 = " + param1 + " , param2 = " + param2; } /// <summary> /// выполнение команд от owin /// </summary> /// <param name="command">имя команды</param> /// <param name="args">аргументы команды</param> /// <returns></returns> string IPlugin.RunCommand(string command, Microsoft.Owin.IFormCollection args) { // выпорлняем команду if (command == "test_command") return test_command(args["param1"], args["param2"]); // не нашли команду return "command not found"; } #endregion #region конрол для вставки в диалог плагина /// <summary> /// создать User Control /// </summary> /// <returns>визуальное представление плагина</returns> Control IPlugin.CreateControl() { Label pluginLabel = new Label(); pluginLabel.Visible = true; pluginLabel.Text = "some text"; return pluginLabel; } #endregion }
Функция RunCommand используется для обработки команд. А функция CreateControl для создания вашего интерфейса.
В будущем данный компонент будет расширяться под новые запросы наших клиентов.
Для создания интерфейса вашего плагина нужно добавить в проект UserControl и на него накидать весь интерфейс с функционалом. Создание вашего контрола будет прописано в функции CreateControl.
В качестве примера можно посмотреть плагин прокси чекера для этого в папке XHE создаём папку Xweb Proxy Checker и добавляем туда вот эти dll - http://humanemulator.net/Plugins/XWeb_Proxy_Checker.zip