Записали в todo.
Плагины для Human Emulator CEF
Re: Плагины для Human Emulator CEF
А как из плагина запустить какую то команду в Хумане? например browser->navigate.
Re: Плагины для Human Emulator CEF
в IPluginConnector есть string IPluginConnector.RunCommand(string[] command, Microsoft.Owin.IFormCollection args)
передаём в него
command[0]="Browser";
command[1]="navigate";
ну и параметры через args передать.
Re: Плагины для Human Emulator CEF
А пример можете скинуть что бы при нажатии на кнопку был переход на Гугль?
Re: Плагины для Human Emulator CEF
/// <summary> /// закладка Быстрый Старт /// </summary> public partial class SampleUserControl : UserControl { /// <summary> /// объект плагина для подключения к Human Emulator /// </summary> SampleXHEObjectPlugin _objPlugin; #region создание /// <summary> /// конструктор /// </summary> public SampleUserControl() { InitializeComponent(); } /// <summary> /// конструктор /// </summary> public SampleUserControl(SampleXHEObjectPlugin objPlugin) { InitializeComponent(); // присоединяем контрол Dock = DockStyle.Fill; _objPlugin = objPlugin; } private void button1_Click(object sender, EventArgs e) { Dictionary<string, string[]> args = new Dictionary<string, string[]>(); args["url"] = new string[] { "google.com" }; _objPlugin.RunHumanCommand("Browser.navigate", new Microsoft.Owin.FormCollection(args)); } #endregion private void SampleUserControl_Load(object sender, EventArgs e) { } }
/// <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="connector"></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"; } /// <summary> /// выполнение команд Human Emulator /// </summary> /// <param name="command">имя команды</param> /// <param name="args">аргументы команды</param> /// <returns></returns> public string RunHumanCommand(string command, Microsoft.Owin.IFormCollection args) { string[] array = command.Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries); if (_Connector != null) return _Connector.RunCommand(array, args); // не нашли команду return "command not found"; } #endregion #region конрол для вставки в диалог палагина /// <summary> /// создать User Control /// </summary> /// <returns>визуальное представление плагина</returns> Control IPlugin.CreateControl() { /* Label pluginLabel = new Label(); pluginLabel.Visible = true; try { // браузер pluginLabel.Text = "Web Browser : " + _Connector.GetBrowser()+"\r\n"; // редактор if (_Connector.GetEditor("")!=null) { var editor = _Connector.GetEditor(""); pluginLabel.Text += "Scintilla Editor : " + _Connector.GetEditor("")+"\r\n"; pluginLabel.Text += "version : " + editor.GetVersionInfo()+"\r\n\\r\n"; } else pluginLabel.Text += "No current editor"; // дерево pluginLabel.Text += "Tree : " + _Connector.GetQuickStartTree()+"\r\n"; } catch( Exception ex) { pluginLabel.Text+=ex.Message; } return pluginLabel;*/ // добавить контрол с прокси чекером SampleUserControl proxyCtrl = new SampleUserControl(this); return proxyCtrl; } #endregion }Можно не создавать свою RunHumanCommand, а сразу использовать функцию string IPlugin.RunCommand(string command, Microsoft.Owin.IFormCollection args).
Как правильно вызывать команды "Browser.navigate" и параметры args["url"] = new string[] { "google.com" }; можно посмотреть через панель Информации
там будет подобный текст
Application.quit => true 23:49:11 Browser.get_last_navigation_error => 23:49:09 Browser.IsBusy?num=-1 => true 23:49:07 Browser.navigate?url=http://www.ya.ru&use_cache=1 => true 23:49:07 Debug.set_cur_script_path?path=C:\XWeb Studio\Human Emulator Studio 7.0.20\My Scripts\4.php => trueто есть как раз название объекта и функция Browser.navigate, а также параметры url=http://www.ya.ru&use_cache=1 и т.д.
Также для управления Хуманом из своего кода C# по прежнему можно использовать XHE.dll.