Плагины для Human Emulator CEF

вопросы связанные с работой версии с Chromium
Аватара пользователя
XwebDeveloper
Сообщения: 51
Зарегистрирован: 13 ноя 2017, 12:53

Плагины для Human Emulator CEF

Сообщение XwebDeveloper » 01 дек 2017, 17:10

C версии 6.0.23 добавлена возможность создания плагинов (расширения функционала через создание дополнительных объектов в dll + плагинов - диалогов )

Пример плагина (исходники) можно скачать отсюда : 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
Запрос на создание скриптов viewforum.php?f=61

LazyCot
Сообщения: 51
Зарегистрирован: 03 окт 2010, 16:37

Re: Плагины для Human Emulator CEF

Сообщение LazyCot » 01 дек 2017, 20:43

Возможность использовать плагины есть только для хромиума?
Делаю такое предположение, потому что:
C версии 6.0.23 добавлена возможность создания плагинов...
В версии для IE такая возможность будет?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Плагины для Human Emulator CEF

Сообщение bigfozzy » 01 дек 2017, 21:15

Пока только для хрома (в дальнейшем в хром версии можно будет использовать и ИЕ), отдельную возможность для ие версии пока не рассматривали.

Аватара пользователя
spaiker
Сообщения: 33
Зарегистрирован: 14 сен 2017, 02:01

Re: Плагины для Human Emulator CEF

Сообщение spaiker » 09 июн 2018, 00:03

Если я правильно понял из выше написанного, то я могу добавлять в программу свои объекты с командами или диалоги, окна, панели и т.д., но они должны быть исключительно на C#?

А будет ли возможность добавлять подобные плагины в Studio на PHP?

И есть ли ли какая то защита этих плагинов, что бы можно было их продавать?

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Плагины для Human Emulator CEF

Сообщение Support » 09 июн 2018, 00:14

Пока что данная технология на стадии обкатки. Как только будет понятно как это реализовать наиболее удобным образом для наших клиентов, подумаем и над PHP.

По поводу защиты в C# вы легко можете сделать свой механизм и использовать его при создании плагинов. Примеров в интернете много, как и статей про организацию защиты софта.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 3047
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Плагины для Human Emulator CEF

Сообщение bigfozzy » 09 июн 2018, 00:26

Окошки и т.п, проще всего на C# писать. Защиту пока свою встраивать.

А так - можно создать любые механизмы плагинов на любых яхзыках, только все это нужно обговрить. По ПХП палагинам есть нескольок вопросов :

А как вы видите плагин на PHP - что он должен делать ? Что например, ему нужно от хумана получать ?

Аватара пользователя
super
Сообщения: 146
Зарегистрирован: 03 ноя 2017, 13:58

Re: Плагины для Human Emulator CEF

Сообщение super » 09 июн 2018, 18:50

Идея с подключение плагинов хорошая, осталось придумать идею для плагина.

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Плагины для Human Emulator CEF

Сообщение Support » 09 июн 2018, 19:50

super писал(а):
09 июн 2018, 18:50
Идея с подключение плагинов хорошая, осталось придумать идею для плагина.
Можно любой скрипт сделать в виде плагина. Сделать в нём ввод настроек через диалог и в нём же нажимать на кнопку запуска скрипта.

Аватара пользователя
super
Сообщения: 146
Зарегистрирован: 03 ноя 2017, 13:58

Re: Плагины для Human Emulator CEF

Сообщение super » 09 июн 2018, 20:04

Удобно. В будущем обкатаю.

kutuzoff
Сообщения: 19
Зарегистрирован: 06 ноя 2014, 03:57

Re: Плагины для Human Emulator CEF

Сообщение kutuzoff » 13 июн 2018, 17:48

Примеры реализации (с исходниками) есть ?

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Плагины для Human Emulator CEF

Сообщение Support » 13 июн 2018, 18:09

kutuzoff писал(а):
13 июн 2018, 17:48
Примеры реализации (с исходниками) есть ?
Пример плагина (исходники) можно скачать отсюда : http://humanemulator.net/Plugins/Plugin_Sample.zip

В качестве примера можно посмотреть плагин прокси чекера для этого в папке XHE создаём папку Xweb Proxy Checker и добавляем туда вот эти dll - http://humanemulator.net/Plugins/XWeb_Proxy_Checker.zip

Будут вопросы по примерам задавайте тут, всё подскажем и расскажем. Ну и, если какие то замечания или предложения тоже пишите. Всегда рады услышать мнение наших клиентов.

kutuzoff
Сообщения: 19
Зарегистрирован: 06 ноя 2014, 03:57

Re: Плагины для Human Emulator CEF

Сообщение kutuzoff » 13 июн 2018, 18:27

А пошаговой инструкции или что-то Quick Start - по тому как сделать плагин, скажем расширяющий объекты языка, нет ?

Аватара пользователя
Support
Site Admin
Сообщения: 1000
Зарегистрирован: 10 апр 2009, 17:45
Контактная информация:

Re: Плагины для Human Emulator CEF

Сообщение Support » 13 июн 2018, 19:04

kutuzoff писал(а):
13 июн 2018, 18:27
А пошаговой инструкции или что-то Quick Start - по тому как сделать плагин, скажем расширяющий объекты языка, нет ?
Пошаговой нет. А что именно вы хотите видеть в этой инструкции?

Аватара пользователя
super
Сообщения: 146
Зарегистрирован: 03 ноя 2017, 13:58

Re: Плагины для Human Emulator CEF

Сообщение super » 14 июн 2018, 12:14


kutuzoff
Сообщения: 19
Зарегистрирован: 06 ноя 2014, 03:57

Re: Плагины для Human Emulator CEF

Сообщение kutuzoff » 15 июн 2018, 13:15

super писал(а):
14 июн 2018, 12:14
Держи инструкцию.
Спасибо, но это уже выучено.
Support писал(а):
13 июн 2018, 19:04
kutuzoff писал(а):
13 июн 2018, 18:27
А пошаговой инструкции или что-то Quick Start - по тому как сделать плагин, скажем расширяющий объекты языка, нет ?
Пошаговой нет. А что именно вы хотите видеть в этой инструкции?
Ну как с нуля создавать, какие библиотеки подключать, что куда вставлять и что за что отвечает в коде. Вообщем, начиная с создания нового проекта, и до подключения плагина в хуман и его использования.

Ответить