send_key
send_key($key,$is_key=false,$ctrl=false,$alt=false,$shift=false); - данная функция используется для эмуляции на уровне событий ввода заданной клавиши с клавиатуры. Может работать даже если программа находится в свернутом состоянии и в трее.Функция на вход принимает параметры:
Если во время работы этой функции нажать Ctrl (или эмулировать нажатие через комманды set_ctrl_prefix) то посланная клавиша будет интерпритироваться как набор горячих клавиш для хумана.
После отработки функция возвращает результат своей работы в скрипт :
<?php // Scenario: Demonstrates how to send various key commands and clipboard operations $xhe_host = "localhost:7010"; // Connect functional objects if not already connected if (!isset($path)){ $path="../../../Templates/init.php"; require($path); } // info echo "\n<span >keyboard->" . basename (__FILE__) . "</span>\n"; // Set variables for navigation to test page $testUrl = TEST_POLYGON_URL . "listbox.html"; // Navigate to the test page echo "Navigate to test page with listbox: "; $result = WEB::$browser->navigate($testUrl); if ($result) { echo "Navigation successful\n"; } else { echo "Failed to navigate\n"; } // Example 1: Set focus on listbox and send space key $listboxNumber = 4; $keyCode = VK_SPACE; $isAltKey = true; echo "1. Set focus on listbox #$listboxNumber and send space key: "; $result1 = DOM::$listbox->set_focus_by_number($listboxNumber); $result2 = SYSTEM::$keyboard->send_key($keyCode, $isAltKey); if ($result1 && $result2) { echo "Focus set and space key sent successfully\n"; } else { echo "Failed to set focus or send space key\n"; } sleep(1); echo("\n"); // Example 2: Send down arrow key $keyCode = VK_DOWN; $isAltKey = true; echo "2. Send down arrow key on listbox #$listboxNumber: "; $result = SYSTEM::$keyboard->send_key($keyCode, $isAltKey); if ($result) { echo "Down arrow key sent successfully\n"; } else { echo "Failed to send down arrow key\n"; } sleep(1); echo("\n"); // Example 3: Send down arrow key again echo "3. Send down arrow key again on listbox #$listboxNumber: "; $result = SYSTEM::$keyboard->send_key($keyCode, $isAltKey); if ($result) { echo "Down arrow key sent successfully\n"; } else { echo "Failed to send down arrow key\n"; } sleep(1); echo("\n"); // Example 4: Send up arrow key $keyCode = VK_UP; $isAltKey = true; echo "4. Send up arrow key on listbox #$listboxNumber: "; $result = SYSTEM::$keyboard->send_key($keyCode, $isAltKey); if ($result) { echo "Up arrow key sent successfully\n"; } else { echo "Failed to send up arrow key\n"; } sleep(1); echo("\n"); // Example 5: Send page down key echo "\n"; // Send page down key $keyCode = VK_PAGEDOWN; $isAltKey = true; echo "5. Send page down key on listbox #$listboxNumber: "; $result = SYSTEM::$keyboard->send_key($keyCode, $isAltKey); if ($result) { echo "Page down key sent successfully\n"; } else { echo "Failed to send page down key\n"; } sleep(1); echo("\n"); // Example 6: Send page up key $keyCode = VK_PAGEUP; $isAltKey = true; echo "6. Send page up key on listbox #$listboxNumber: "; $result = SYSTEM::$keyboard->send_key($keyCode, $isAltKey); if ($result) { echo "Page up key sent successfully\n"; } else { echo "Failed to send page up key\n"; } sleep(1); echo("\n"); // Example 7: Send end key $keyCode = VK_END; $isAltKey = true; echo "7. Send end key on listbox #$listboxNumber: "; $result = SYSTEM::$keyboard->send_key($keyCode, $isAltKey); if ($result) { echo "End key sent successfully\n"; } else { echo "Failed to send end key\n"; } sleep(1); echo("\n"); // Example 8: Send home key $keyCode = VK_HOME; $isAltKey = true; echo "8. Send home key on listbox #$listboxNumber: "; $result = SYSTEM::$keyboard->send_key($keyCode, $isAltKey); if ($result) { echo "Home key sent successfully\n"; } else { echo "Failed to send home key\n"; } sleep(1); echo "\n"; // Example 9: Send tab key $keyCode = VK_TAB; $isAltKey = true; echo "9. Send tab key on listbox #$listboxNumber: "; $result = SYSTEM::$keyboard->send_key($keyCode, $isAltKey); if ($result) { echo "Tab key sent successfully\n"; } else { echo "Failed to send tab key\n"; } // Navigate to input to test page echo "\n\n"; // Navigate to the test page $testUrl = TEST_POLYGON_URL . "input.html"; echo "Navigate to test page with '$testUrl': "; $result = WEB::$browser->navigate($testUrl); if ($result) { echo "Navigation successful\n"; } else { echo "Failed to navigate\n"; } // Set focus on search input and input text echo "\n"; // Set focus on search input and input text $inputNumber = 1; $text = "1teststring"; echo "Set focus on input #$inputNumber field and input text: "; $result1 = DOM::$input->set_focus_by_number($inputNumber); $result2 = SYSTEM::$keyboard->send_input($text); if ($result1 && $result2) { echo "Focus set and text input successful\n"; } else { echo "Failed to set focus or input text\n"; } sleep(1); echo("\n"); // Example 10: Select text and cut to clipboard $inputNumber = 1; $clickX = 10; $clickY = 10; echo "Select text by double-clicking in input #$inputNumber: "; $inputElement = DOM::$input->get_by_number($inputNumber); $result1 = $inputElement->send_mouse_click($clickX, $clickY); $result2 = $inputElement->send_mouse_double_click($clickX, $clickY); if ($result1 && $result2) { echo "Text selected successfully\n"; } else { echo "Failed to select text\n"; } sleep(1); echo("\n"); // Cut text to clipboard $keyCode = "X"; $isAltKey = false; // use key value $isCtrl = true; echo "10. Cut text to clipboard (Ctrl+X): "; $result = SYSTEM::$keyboard->send_key($keyCode, $isAltKey, $isCtrl); if ($result) { echo "Text cut successfully\n"; } else { echo "Failed to cut text\n"; } // Get text from clipboard echo "\n"; // Get text from clipboard echo "Get text from clipboard: "; $clipboardText = SYSTEM::$clipboard->get_text(); if ($clipboardText !== false) { echo "Clipboard text value (must be '$text'): $clipboardText\n"; } else { echo "Failed to get clipboard text\n"; } sleep(1); echo("\n"); // Get coordinates of element and select it $elementText = "Пример"; $exactMatch = false; echo "Get coordinates of element `h3`: "; $x = DOM::$h3->get_x_by_inner_text($elementText, $exactMatch); $y = DOM::$h3->get_y_by_inner_text($elementText, $exactMatch); if ($x !== false && $y !== false) { echo "Element coordinates: $x x $y\n"; } else { echo "Failed to get element coordinates\n"; } sleep(1); echo("\n"); // Example 11: Copy selected text to clipboard echo "Select element by double-clicking: "; $result1 = SYSTEM::$mouse->send_click($x, $y); $result2 = SYSTEM::$mouse->send_double_click($x, $y); if ($result1 && $result2) { echo "Element selected successfully\n"; } else { echo "Failed to select element\n"; } // Copy selected text to clipboard $keyCode = "45"; // Insert key $isAltKey = true; $isCtrl = true; echo "11. Copy selected text to clipboard (Ctrl+Insert): "; $result = SYSTEM::$keyboard->send_key($keyCode, $isAltKey, $isCtrl); if ($result) { echo "Text copied successfully\n"; } else { echo "Failed to copy text\n"; } // Get copied text from clipboard echo "Get copied text from clipboard: "; $clipboardText = SYSTEM::$clipboard->get_text(); if ($clipboardText !== false) { echo "Copied text: $clipboardText\n"; } else { echo "Failed to get copied text\n"; } sleep(1); echo("\n"); // Example 12: Set focus on input and paste from clipboard by alt key $inputNumber = 1; $keyCode = "86"; // V key $isAltKey = true; // use key code $isCtrl = true; echo "12. Set focus on input field #$inputNumber and paste from clipboard (Ctrl+V): "; $result1 = DOM::$input->set_focus_by_number($inputNumber); $result2 = SYSTEM::$keyboard->send_key($keyCode, $isAltKey, $isCtrl); if ($result1 && $result2) { echo "Focus set and text pasted successfully\n"; } else { echo "Failed to set focus or paste text\n"; } // Get input value for control $targetInputVal = DOM::$input->get_value_by_number($inputNumber); if ($targetInputVal){ echo("Value of input #$inputNumber (must be '$clipboardText'): $targetInputVal\n"); } sleep(1); echo("\n"); // Example 13: Set focus on input and paste from clipboard $inputNumber = 2; $keyCode = "v"; // v key lowercase $isAltKey = false; // use key code $isCtrl = true; echo "13. Set focus on input field #$inputNumber and paste from clipboard (Ctrl+V): "; $result1 = DOM::$input->set_focus_by_number($inputNumber); $result2 = SYSTEM::$keyboard->send_key($keyCode, $isAltKey, $isCtrl); if ($result1 && $result2) { echo "Focus set and text pasted successfully\n"; } else { echo "Failed to set focus or paste text\n"; } // Get input value for control $targetInputVal = DOM::$input->get_value_by_number($inputNumber); if ($targetInputVal){ echo("Value of input #$inputNumber (must be '$clipboardText'): $targetInputVal\n"); } sleep(1); echo("\n"); // Example 14: Set focus on input send one lowercase symbol $inputNumber = 3; $keyCode = "v"; // v key lowercase $isAltKey = false; // use key code $isCtrl = false; echo "14. Set focus on input field #$inputNumber and send one lowercase symbol '$keyCode': "; $result1 = DOM::$input->set_focus_by_number($inputNumber); $result2 = SYSTEM::$keyboard->send_key($keyCode, $isAltKey, $isCtrl); if ($result1 && $result2) { echo "Focus set and text pasted successfully\n"; } else { echo "Failed to set focus or paste text\n"; } sleep(1); echo("\n"); // Example 15: Set focus on input send one uppercase сyrillic symbol $inputNumber = 3; $keyCode = "Ф"; // Cyrillic key uppercase $isAltKey = false; // use key code $isCtrl = false; echo "15. Set focus on input field #$inputNumber and send one uppercase symbol '$keyCode': "; $result1 = DOM::$input->set_focus_by_number($inputNumber); $result2 = SYSTEM::$keyboard->send_key($keyCode, $isAltKey, $isCtrl); if ($result1 && $result2) { echo "Focus set and text pasted successfully\n"; } else { echo "Failed to set focus or paste text\n"; } sleep(1); echo("\n"); // Example 16: Set focus on input send one symbol by Alt code $inputNumber = 3; $keyCode = "86"; // V key $isAltKey = true; // use key code $isCtrl = false; echo "16. Set focus on input field #$inputNumber and send one symbol by Alt code '$keyCode': "; $result1 = DOM::$input->set_focus_by_number($inputNumber); $result2 = SYSTEM::$keyboard->send_key($keyCode, $isAltKey, $isCtrl); if ($result1 && $result2) { echo "Focus set and text pasted successfully\n"; } else { echo "Failed to set focus or paste text\n"; } sleep(1); echo("\n"); // Example 17: Set focus on input send Ctr+V by Alt code $inputNumber = 3; $keyCode = "86"; // V key $isAltKey = true; // use key code $isCtrl = true; // Ctrl key is press echo "17. Set focus on input #$inputNumber send Ctr+V by Alt code '$keyCode': "; $result1 = DOM::$input->set_focus_by_number($inputNumber); $result2 = SYSTEM::$keyboard->send_key($keyCode, $isAltKey, $isCtrl); if ($result1 && $result2) { echo "Focus set and text pasted successfully\n"; } else { echo "Failed to set focus or paste text\n"; } // Get input value for control $targetInputVal2 = DOM::$input->get_value_by_number($inputNumber); if ($targetInputVal2){ echo("Value of input #$inputNumber (must be 'vФV$targetInputVal'): $targetInputVal2\n"); } // Quit the application WINDOW::$app->quit(); ?>
# Additional paths import sys sys.path.insert(0, '../../../Templates PY/') xhe_host = "127.0.0.1:7010" from xweb_human_emulator import * # начало echo("<hr><font color=blue>keyboard.xxxxxxxxx</font><hr>") # 1 echo("1. Перейдем на полигон : ") echo(browser.navigate("https://rpa-bot.ru/wiki/poligon/listbox.html"),"<br>") # 2 echo("2. Зададим фокус на 4 листбокс и пошлем клавишу пробела: ") echo(listbox.set_focus_by_number(4)," ") echo(keyboard.send_key(VK_SPACE),"\n") sleep(2) # 3 echo("3. Пошлем клавишу вниз : ") echo(keyboard.send_key(VK_DOWN),"\n") sleep(2) # 4 echo("4. Пошлем клавишу вниз : ") echo(keyboard.send_key(VK_DOWN),"\n") sleep(2) # 5 echo("5. Пошлем клавишу вверх : ") echo(keyboard.send_key(VK_UP),"\n") sleep(2) # 6 echo("6. Пошлем клавишу page down : ") echo(keyboard.send_key(VK_PAGEDOWN),"\n") sleep(2) # 7 echo("7. Пошлем клавишу page up : ") echo(keyboard.send_key(VK_PAGEUP),"\n") sleep(2) # 8 echo("8. Пошлем клавишу end : ") echo(keyboard.send_key(VK_END),"\n") sleep(2) # 9 echo("9. Пошлем клавишу home : ") echo(keyboard.send_key(VK_HOME),"\n") sleep(2) # 10 echo("10. Пошлем клавишу tab : ") echo(keyboard.send_key(VK_TAB),"\n") # конец echo("<hr><br>") echo("##################################<br><br>") # 1 echo("1. Перейдем на яндекс : ") echo(browser.navigate("http://ya.ru"),"<br>") # 2 echo("2. Зададим фокус на строку поиска : ") echo(input.set_focus_by_number(0),"<br>") # 3 echo("3. Введем заданный текст : ") echo(keyboard.send_input("teststring"),"<br>") sleep(2) # выделим то что скопровали input.get_by_number(0).send_mouse_click(10,10) input.get_by_number(0).send_mouse_double_click(10,10) # 4 echo("4. Вырежем выделенный текст в буффер : ") echo(keyboard.send_key("88",true,true),"<br>") # 5 echo("5. Получим текст в буффере обмена : ") echo(clipboard.get_text(),"<br>") # конец echo("<hr><br>") echo("##################################<br><br>") # 1 echo("1. Перейдем на полигон : ") echo(browser.navigate("https://rpa-bot.ru/wiki/poligon/anchor.html"),"<br>") # 2 echo("2. Получим коордианты элемента который можно выделить по двойному щелчку : ") x=element.get_x_by_inner_text("Ссылки во Frame",false) y=element.get_y_by_inner_text("Ссылки во Frame",false) echo(x," x ") echo(y,"<br>") # 3 echo("3. Выделим элемент : ") echo(mouse.send_click(x,y)," ") echo(mouse.send_double_click(x,y),"<br>") # 4 echo("4. Скопируем выделенный текст Ctrl+Insert (45) : ") echo(keyboard.send_key("45",true,true),"\n") # 5 echo("5. Получим скопированный текст : ") echo(clipboard.get_text()) # конец echo("<hr><br>") echo("##################################<br><br>") # 1 echo("1. Закинем текст в буффер : ") echo(clipboard.put_text("seo"),"<br>") # 2 echo("2. Перейдем на яндекс : ") echo(browser.navigate("http://ya.ru"),"<br>") # 3 echo("3. Зададим фокус на строку поиска : ") echo(input.set_focus_by_number(0),"<br>") # 4 echo("4. Вставим текст с буффера : Ctrl + v (86) : ") echo(keyboard.send_key("v",true,true),"<br>") # конец echo("<hr><br>") # Quit app.quit()
#region using using System; using System.Diagnostics; using System.Collections.Generic; using System.Linq; using System.IO; using System.Text; using System.Threading; using XHE; using XHE.XHE_DOM; using XHE.XHE_System; using XHE.XHE_Window; using XHE.XHE_Web; #endregion class Program:XHEScript { static void Main(string[] args) { // init XHE server = "localhost:7010"; InitXHE(); // начало echo("<hr><font color=blue>keyboard.send_key</font><hr>"); // 1 шаг echo("1. Перейдем на яндекс : "); echo(browser.navigate("http://ya.ru")+"<br>"); // 2 шаг echo("2. Зададим фокус на строку поиска : "); echo(input.set_focus_by_number(0)+"<br>"); // 3 шаг echo("3. Сделаем поиск SR (код 83+92+13) : "); keyboard.set_current_language("en"); echo(keyboard.send_key("83")+" "); echo(keyboard.send_key("82")+" "); echo(keyboard.send_key("13",false)); // конец echo("\n\n"); app.quit(); } }
// подключим функциональные объекты, если еще не подключен xhe_host="127.0.0.1:7010"; echo=require("../../../Templates JS/init.js"); // начало echo("<hr><font color=blue>keyboard.send_key</font><hr>"); // 1 шаг echo("1. Перейдем на полигон : "); echo(browser.navigate("https://rpa-bot.ru/wiki/poligon/listbox.html")+"<br>"); // 2 шаг echo("2. Зададим фокус на 4 листбокс и пошлем клавишу пробела: "); echo(listbox.set_focus_by_number(4)+" "); echo(keyboard.send_key(VK_SPACE)+"\n"); browser.sleep(2); // 3 шаг echo("3. Пошлем клавишу вниз : "); echo(keyboard.send_key(VK_DOWN)+"\n"); browser.sleep(2); // 4 шаг echo("4. Пошлем клавишу вниз : "); echo(keyboard.send_key(VK_DOWN)+"\n"); browser.sleep(2); // 5 шаг echo("5. Пошлем клавишу вверх : "); echo(keyboard.send_key(VK_UP)+"\n"); browser.sleep(2); // 6 шаг echo("6. Пошлем клавишу page down : "); echo(keyboard.send_key(VK_PAGEDOWN)+"\n"); browser.sleep(2); // 7 шаг echo("7. Пошлем клавишу page up : "); echo(keyboard.send_key(VK_PAGEUP)+"\n"); browser.sleep(2); // 8 шаг echo("8. Пошлем клавишу end : "); echo(keyboard.send_key(VK_END)+"\n"); browser.sleep(2); // 9 шаг echo("9. Пошлем клавишу home : "); echo(keyboard.send_key(VK_HOME)+"\n"); browser.sleep(2); // 10 шаг echo("10. Пошлем клавишу tab : "); echo(keyboard.send_key(VK_TAB)+"\n"); // конец echo("\n"); echo("////////////////////////////////////////////////////////////////////\n"); // 1 шаг echo("1. Перейдем на яндекс : "); echo(browser.navigate("http://ya.ru")+"<br>"); // 2 шаг echo("2. Зададим фокус на строку поиска : "); echo(input.set_focus_by_number(0)+"<br>"); // 3 шаг echo("3. Введем заданный текст : "); echo(keyboard.send_input("teststring")+"<br>"); browser.sleep(2); // выделим то что скопровали input.get_by_number(0).send_mouse_click(10,10); input.get_by_number(0).send_mouse_double_click(10,10); // 4 шаг echo("4. Вырежем выделенный текст в буффер : "); echo(keyboard.send_key("88",true,true)+"<br>"); // 5 шаг echo("5. Получим текст в буффере обмена : "); echo(clipboard.get_text()+"<br>"); // конец echo("\n"); echo("////////////////////////////////////////////////////////////////////\n"); // 1 шаг echo("1. Перейдем на полигон : "); echo(browser.navigate("https://rpa-bot.ru/wiki/poligon/anchor.html")+"<br>"); // 2 шаг echo("2. Получим коордианты элемента который можно выделить по двойному щелчку : "); x=element.get_x_by_inner_text("Ссылки во Frame",false); y=element.get_y_by_inner_text("Ссылки во Frame",false); echo("x="+x+" y="+y+"<br>"); // 3 шаг echo("3. Выделим элемент : "); echo(mouse.send_click(21,384)+" "); echo(mouse.send_double_click(21,384)+"<br>"); // 4 шаг echo("5. Скопируем выделенный текст : "); echo(keyboard.send_key("67",true,true)+"\n"); // 5 шаг echo("5. Получим скопированный текст : "); echo(clipboard.get_text(true)); // конец echo("\n"); echo("////////////////////////////////////////////////////////////////////\n"); // 1 шаг echo("1. Закинем текст в буффер : "); echo(clipboard.put_text("seo")+"<br>"); // 2 шаг echo("2. Перейдем на яндекс : "); echo(browser.navigate("http://ya.ru")+"<br>"); // 3 шаг echo("3. Зададим фокус на строку поиска : "); echo(input.set_focus_by_number(0)+"<br>"); // 4 шаг echo("4. Вставим текст с буффера : "); echo(keyboard.send_key("86",true,true)+"<br>"); // конец echo("\n"); // Quit app.quit();
=============================================
Keyboard Объекты DOM System Vision Web Window
=============================================
если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум
.