Эмуляция ввода с клавиатуры
Посылает один или несколько кодов клавиш активному окну, т. е. эмулирует ввод с клавиатуры. 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..."
)#
См. также:
![]()