Эмуляция ввода с клавиатуры
Посылает один или несколько кодов клавиш активному окну, т. е. эмулирует ввод с клавиатуры. SEND-KEYS: может быть использован как для отправки нужному окну клавиатурного сокращения (например, CTRL+S - сохранить файл), так и для простого "печатания" текста в различных полях ввода и текстовых редакторах.
Как правильно указывать коды клавиш в качестве аргумента к слову SEND-KEYS: подробно разъясняется в главе "Коды клавиш".
Примеры:
\ печатаем слово 'test' SEND-KEYS: "test" \ печатаем цифры '12345' на одной строке и '67890' на другой SEND-KEYS: "12345{ENTER}67890"
Иногда, при описании клавиатурных сокращений, возникает необходимость указать одновременно нажатые клавиши (например, нажата и удерживается клавиша CTRL и при этом нажимаются клавиши и ALT и G). В этом случае вы сначала указываете первую нажатую и удерживаемую клавишу, а все остальные окружаете круглыми скобками.
Примеры:
\ 'SHIFT+e+c' SEND-KEYS: "+(ec)" \ 'CTRL+SHIFT+a' SEND-KEYS: "^(+a)" \ 'CTRL+ALT' SEND-KEYS: "^(@)" \ 'WIN+F1' SEND-KEYS: "$({F1})"
Паузу между "нажатиями" клавиш и между конструкциями SEND-KEYS: можно задать с помощью слова SEND-KEYS-DELAY:. Прямо в строке с клавиатурными кодами можно указать задежку (паузу) в миллисекундах между нажатиями двух клавиш в форме:
{DELAY time-in-ms}
Пример:
#( test_send_keys \ печатаем цифры '12345', потом вставляем \ секундную паузу и "допечатываем" '67890' NoActive Action: WIN-ACTIVATE: "*Notepad" SEND-KEYS: "12345{DELAY 1000}67890" )#
#( test_send_keys1 \ запускаем 'Calculator' и производим несложные вычисления Time: 0 12 * * * * Action: START-APP: calc.exe PAUSE: 500 WIN-ACTIVATE: "Calculator" PAUSE: 100 SEND-KEYS: "1{+}2{ENTER}{DELAY 2000}*3{ENTER}" )#
С помощью SEND-KEYS: можно переключать раскладку клавиатуры и "печатать" даже по-русски (или на любом другом установленном языке). Единственное ограничение: для эмуляции ввода русских букв в ГУИ-приложениях вам следует "отслеживать" текущее состояние раскладки клавиатуры. Если перед использованием SEND-KEYS: была включена английская раскладка, то после переключения раскладки на русскую, следует эмулировать нажатия соответствующих латинских литер для ввода русского текста:
\ текущая раскладка - английская. \ 'ALT+SHIFT' - переключение раскладки клавиатуры. WIN-ACTIVATE: "*Notepad" PAUSE: 500 SEND-KEYS: "+(t)est @(+)ntcn @(+)test"
Напротив, если перед использованием SEND-KEYS: русская раскладка являлась текущей для активного ГУИ-приложения, то для ввода русских букв следует указывать русские символы:
\ текущая раскладка - русская. \ 'ALT+SHIFT' - переключение раскладки клавиатуры. WIN-ACTIVATE: "*Notepad" PAUSE: 500 SEND-KEYS: "+(t)est @(+)тест @(+)test"
Соответственно, можно, например, создать такую задачу:
#( test_typing \ устанавливаем русскую раскладку клавиатуры : KeysToRUS SEND-KEYS: "@(+1)" ; \ устанавливаем английскую раскладку клавиатуры : KeysToENG SEND-KEYS: "@(+2)" ; Action: PAUSE: 1000 KeysToRUS SEND-KEYS: "+(Э)то тест - " KeysToENG SEND-KEYS: "This is a test" )#
Определить текущую раскладку клавиатуры для активного ГУИ приложения вы можете с помощью плагина kbd_layout.spf.
Ограничения: при составлении клавиатурных сокращений нельзя пользоваться клавишей PrtScr (PRINTSCREEN). Кроме этого, вам не удастся "отправить" программе клавиатурное сокращение CTRL+ALT+DELETE.
SEND-KEYS-DELAY: <between_keystrokes_in_ms> <between_SEND-KEYS_in_ms>
Задает задержку в миллисекундах между каждой "нажимаемой" клавишей и между каждой следующей конструкцией SEND-KEYS: (WIN-SEND-KEYS:). Позволяет эмулировать эффект "медленно" нажимаемых клавиш.
Действует на все последующие SEND-KEYS: (WIN-SEND-KEYS:) в данной задаче.
Пример:
#( test_send_keys_delay NoActive Action: START-APP: notepad.exe 1000 PAUSE WIN-ACTIVATE: "*Notepad" 500 PAUSE SEND-KEYS-DELAY: 500 0 SEND-KEYS: "Typing slowly..." )#
См. также: