1. Главная страница » Компьютеры

Autoit эмуляция нажатия клавиш

Автор: | 16.12.2019

Quick reference for the Send( "keys" [, flag] ) Command. ^ Ctrl ! Alt + Shift # Win

AutoIt can send all ASCII and Extended ASCII characters (0-255), to send UNICODE characters you must use the "ASC" option and the code of the character you wish to Send(see below).

To send the ASCII value A (same as pressing ALT+065 on the numeric keypad)

(When using 2 digit ASCII codes you must use a leading 0, otherwise an obsolete 437 code page is used).

To send UNICODE characters enter the character code, for example this sends a Chinese character

Single keys can also be repeated, e.g.

Send ( " " ) ; Presses the DEL key 4 times
Send ( " " ) ; Sends 30 ‘S’ characters
Send ( " + " ) ; Presses Shift + Tab 4 times

To hold a key down

Send ( " " ) ; Holds the A key down
Send ( "
" ) ; Releases the A key

If you with to use a variable for the count, try

If you wish to send the ASCII value A four times, then try

Most laptop computer keyboards have a special Fn key. This key cannot be simulated.

Note, by setting the flag parameter to 1 the "keys" parameter is sent RAW. This is useful when you want to send some text copied from a variable and you want the text sent exactly as written.

Send is quite useful because windows can be navigated without needing a mouse.

For example, open Folder Options (in the control panel) and try the following:

Send("") Navigate to next control (button, checkbox, etc)
Send("+") Navigate to previous control.
Send("^") Navigate to next WindowTab (on a Tabbed dialog window)
Send("^+") Navigate to previous WindowTab.
Send("") Can be used to toggle a checkbox or click a button.
Send("<+>") Usually checks a checkbox (if it’s a "real" checkbox.)
Send("<->") Usually unchecks a checkbox.
Send("") Recursively expands folders in a SysTreeView32.

Use Alt-key combos to access menu items. Also, open Notepad and try the following:

Send("!f") Send Alt+f, the access key for Notepad’s file menu. Try other letters!
Send("") Move down a menu.
Send("") Move up a menu.
Send("") Move leftward to new menu or expand a submenu.
Send("") Move rightward to new menu or collapse a submenu.

See Windows’ Help—press Win+F1—for a complete list of keyboard shortcuts if you don’t know the importance of Alt+F4, PrintScreen, Ctrl+C, and so on.

Эмулирует нажатие клавиш в активном окне.

Send ( "keys" [, flag = 0 ] )

keys Последовательность нажимаемых клавиш.
flag [необязательный] Изменяет интерпретацию параметра keys:
0 — (по умолчанию), текст содержит специальные символы, такие как + и !, указывающие на нажатия Shift и Alt.
1 — клавиши как есть (спец-символы <>^+! как обычный текст).

AutoIt может эмулировать нажатия всех символов ASCII и дополнительных ASCII символов (0-255), чтобы отправить символы UNICODE вы должны использовать опцию "ASC" и код символа, который нужно эмулировать (см. в таблице ниже).

Синтаксис команды Send аналогичен одноимённой в ScriptIt и команде "SendKeys" в Visual Basic. Символы эмулируются как есть, за исключением следующих:

‘!’
Это указывает AutoIt эмулировать клавишу Alt, поэтому Send ( "This is text!a" ) выполнит ввод текста "This is text" и затем нажмёт "Alt+a".

Обратите внимание: некоторые программы очень разборчивы в регистре символов и клавиш Alt, т.е. "!A" отличается от "!a". Первый эмулирует Alt+Shift+A, второй Alt+a. Если сомневаетесь, используйте нижний регистр символов!

‘+’
Это указывает AutoIt эмулировать клавишу Shift, поэтому Send ( "Hell+o" ) выполнит ввод текста "HellO". Send ( "!+a" ) эмулирует нажатие "Alt+Shift+a".

‘^’
Это указывает AutoIt эмулировать клавишу Ctrl, поэтому Send ( "^!a" ) эмулирует нажатие "Ctrl+Alt+a".

Обратите внимание: некоторые программы очень разборчивы в регистре символов и клавиш Ctrl, т.е. "^A" отличается от "^a". Первый эмулирует Ctrl+Shift+A, второй Ctrl+a. Если сомневаетесь, используйте нижний регистр символов!

‘#’
"Решётка" теперь эмулирует клавишу Windows; поэтому, Send ( "#r" ) эмулирует нажатие Win+r, который запускает диалоговое окно "Выполнить".

Вы можете использовать SendCapslockMode, чтобы отключить CAPS LOCK перед выполнением функции Send и восстановить после выполнения.
Однако, если пользователь удерживает нажатой клавишу Shift, когда выполняется функция Send, то текст может быть эмулирован в верхнем регистре.
Один из способов обхода данной проблемы — Send ( " " ) перед последующим вызовом Send.

Некоторые клавиатуры, например Чешская, посылают различные символы при использовании клавиши Shift во включённом и выключенном состоянии Caps Lock. Реализация Send в AutoIt такова, что символы В ВЕРХНЕМ РЕГИСТРЕ отсылаются так, как если бы был нажат Shift, так что оно не будет работать.

Некоторые спец-клавиши могут эмулированы, если заключены в фигурные скобки:

Обратите внимание, Windows не позволяет эмулировать сочетание Ctrl+Alt+Del!

Команда (если flag=0) Результат эмуляции
!
#
+
^
<
<>> >
SPACE (пробел)
Enter основной клавиатуры
ALT
или Backspace
или Delete
Стрелка вверх
Стрелка вниз
Стрелка влево
Стрелка вправо
Home
End
или Esc (Escape)
или Insert (Ins)
PageUp
PageDown
— Функциональные клавиши
Tab
Клавиша Print Screen (Prt Scr SysRq)
Левая клавиша Windows
Правая клавиша Windows
Num Lock (on/off/toggle) (включить/выключить/переключить)
Caps Lock (on/off/toggle) (включить/выключить/переключить)
Scroll Lock (on/off/toggle) (включить/выключить/переключить)
для Ctrl+Break
Pause
— Цифры (цифровая клавиатура)
* (цифровая клавиатура)
+ (цифровая клавиатура)
— (цифровая клавиатура)
/ (цифровая клавиатура)
. (цифровая клавиатура)
Enter (цифровая клавиатура)
Клавиша Windows App
Левый Alt
Правый Alt
Левый Ctrl
Правый Ctrl
Левый Shift
Правый Shift
Клавиша спящего режима компьютера
Удерживать Alt в нажатом состоянии, до
Удерживать Shift в нажатом состоянии, до
Удерживать Ctrl в нажатом состоянии, до
Удерживать левый Windows в нажатом состоянии, до
Удерживать правый Windows в нажатом состоянии, до
Выслать клавишу, указав её номер
Только в 2000/XP: Кнопка "назад" в окне просмотра
Только в 2000/XP: Кнопка "вперёд" в окне просмотра
Только в 2000/XP: Кнопка "обновить" в окне просмотра
Только в 2000/XP: Кнопка "остановить" в окне просмотра
Только в 2000/XP: Кнопка "поиск" в окне просмотра
Только в 2000/XP: Кнопка "избранное" в окне просмотра
Только в 2000/XP: Запускает браузер и переходит на домашнюю страницу
Только в 2000/XP: Выключить звук
Только в 2000/XP: Уменьшить звук (на 4% от 100)
Только в 2000/XP: Увеличить звук (на 4% от 100)
Только в 2000/XP: Следующий трек в медиа-плеере
Только в 2000/XP: Предыдущий трек в медиа-плеере
Только в 2000/XP: Остановить воспроизведение в медиа-плеере
Только в 2000/XP: Воспроизведение / пауза в медиа-плеере
Только в 2000/XP: Запуск почтовой программы
Только в 2000/XP: Запуск медиа плеера
Только в 2000/XP: Запуск первой программы пользователя
Только в 2000/XP: Запуск второй программы пользователя

Чтобы эмулировать ASCII символ A (тоже, что нажатие ALT+065 на цифровой клавиатуре)

(Когда используется двухзначный код ASCII вы должны подставить в начало 0, иначе будет использована устаревшая кодовая страница 437).

Чтобы эмулировать символ UNICODE вводите код символа (десятичный или шестнадцатеричный), например это эмулирует китайский символ

Одиночную эмуляцию можно повторить, например:

Send ( " " ) ; Эмулирует нажатие клавиши Del 4 раза
Send ( " " ) ; Эмулирует нажатие клавиши ‘S’ 30 раз
Send ( " + " ) ; Эмулирует нажатие Shift+Tab 4 раза

Клавиша эмулируется не менее одного раза, даже если указано 0 повторов.

Удерживать клавишу в нажатом состоянии (обычно полезно только для игр)

Send ( " " ) ; Удерживать клавишу A нажатой
Send ( "
" ) ;Отпустить клавишу A

Устанавливает состояние клавиш CapsLock, NumLock или ScrollLock

Send ( " " ) ;Включает NumLock
Send ( " " ) ;Выключает CapsLock
Send ( " " ) ;Переключает состояние ScrollLock

Если вы хотите указать количество нажатий в переменной, попробуйте

Если вы хотите эмулировать ASCII символ "A" четыре раза, то попробуйте

Большинство клавиатур ноутбуков имеют специальную клавишу Fn. Эта клавиша не может быть эмулирована.

Примечание: если параметр flag равен 1, то интерпретация спецсимволов в параметре keys будет отключена. Это полезно, если вы хотите выслать текст, скопированный из переменной, и выслать текст именно так, как он написан.

Send очень полезна потому, что навигация в Windows может осуществляться без использования мыши.
Например, откройте "Свойства папки" (в панели управления) и попробуйте выполнить следующее:

Команда Описание
Send ( " " ) Перейти к следующему элементу управления (кнопка, checkbox и т.д.)
Send ( " + " ) Перейти к предыдущему элементу управления.
Send ( " ^ " ) Перейти к следующей вкладке (на вкладках диалогового окна)
Send ( " ^+ " ) Перейти к предыдущей вкладке.
Send ( " " ) Можно использовать для переключения флажка или нажатия кнопки.
Send ( " <+>" ) Устанавливает галочку (Если это настоящий checkbox.)
Send ( " <->" ) Снимает галочку.
Send ( " " ) Раскрывает дерево папки SysTreeView32.

Используйте комбинацию Alt+клавиша для доступа к пунктам меню. Также, откройте Блокнот и выполните следующее:

Команда Описание
Send ( "!f" ) Эмулирует Alt+f, для доступа к меню Блокнота (Alt+ф в русской локализации). Попробуйте другие клавиши! (При нажатии Alt эти буквы становятся подчёркнутыми).
Send ( " " ) Перемещение вниз по меню.
Send ( " " ) Перемещение вверх по меню.
Send ( " " ) Перемещение влево к новому меню или раскрыть подменю.
Send ( " " ) Перемещение вправо к новому меню или свернуть подменю.

Смотрите справку Windows, нажав Win+F1 для просмотра полного списка горячих клавиш, если вы всё ещё не знаете их назначение, таких как Alt+F4, PrintScreen, Ctrl+C и т.д.

При запуске скрипта на удаленном компьютере через программу, такую как psexec (www.sysinternals.com) или beyondexec (www.beyondlogic.org) необходимо, особенно при отправке данных программе запущенной скриптом с функцией Run, использовать ControlSend или другие функции ControlXXX, чтобы непосредственно взаимодействовать с элементами управления. Эмуляция не сработает даже с Opt("SendAttachMode",1).
Использования ключа -s при передаче может позволить больше прав на удалённом компьютере.

Opt("SendKeyDelay". ) изменяет продолжительность паузы между эмулированными нажатиями клавиш.
Opt("SendKeyDownDelay". ) изменяет продолжительность нажатого состояния клавиши, перед тем как её отпустить.
Установите оба параметра "SendKeyDelay" и "SendKeyDownDelay" равным 0, чтобы полностью устранить все задержки при эмуляции нажатий. Это может потребоваться при определенных обстоятельствах, например, при блокировке системы ("#l") это может быть необходимо для устранения задержек, чтобы предохранить клавишу WIN от нажатого состояния.

; Эмуляция нажатия комбинации клавиш Win + R
; Send("#r")
Send ( "#к" ) ; если русский язык по умолчанию при загрузке OS, то вместо "#r" нужно "#к", либо в скрипте временно переключать на англоязычную раскладку.

; в англоязычном примере окно называется Run
$hWnd = WinWait ( "Запуск программы" , "" , 5 )
If Not $hWnd Then
MsgBox ( 4096 , ‘Сообщение’ , ‘Окно не найдено, завершаем работу скрипта’ )
Exit
EndIf
Sleep ( 100 )

; Эмуляция ввода текста notepad.exe и нажатие Enter
Send ( "notepad.exe " )

; Ожидание 5 секунд до появление окна блокнота
$hWnd = WinWait ( "[CLASS:Notepad]" , "" , 5 )
If Not $hWnd Then
MsgBox ( 4096 , ‘Сообщение’ , ‘Окно не найдено, завершаем работу скрипта’ )
Exit
EndIf

Send ( "Сегодняшняя дата и время " )

; Закрывает блокнот.
WinClose ( $hWnd )

; При закрытии появится окно с предложением сохранить файл, classname вызываемого окна "#32770", эмулируем нажатие "TAB" для перемещения фокуса на вторую кнопку и "ENTER", чтобы отказаться от сохранения.
WinWaitActive ( "[CLASS:#32770]" )
Sleep ( 500 )
Send ( " " )

Дополнение №1

Синтаксис команды keybd аналогичен ScriptIt и команде "SendKeys" в Visual Basic. В keybd пробел заменяется символом №. Символы эмулируются как есть, за исключением следующих:

‘!’
Это указывает AutoIt эмулировать клавишу Alt, поэтому " keybd=0

This № is № text!a " выполнит ввод текста "This is text" и затем нажмёт "Alt+a".

Обратите внимание: некоторые программы очень разборчивы в регистре символов и клавиш Alt, т.е. "!A" отличается от "!a". Первый эмулирует Alt+Shift+A, второй Alt+a. Если сомневаетесь, используйте нижний регистр символов!

‘+’
Это указывает AutoIt эмулировать клавишу Shift, поэтому keybd=0

Hell+o выполнит ввод текста "HellO". keybd=0

!+a" эмулирует нажатие "Alt+Shift+a".

‘^’
Это указывает AutoIt эмулировать клавишу Ctrl, поэтому keybd=0

^!a эмулирует нажатие "Ctrl+Alt+a".

Обратите внимание: некоторые программы очень разборчивы в регистре символов и клавиш Ctrl, т.е. "^A" отличается от "^a". Первый эмулирует Ctrl+Shift+A, второй Ctrl+a. Если сомневаетесь, используйте нижний регистр символов!

‘#’
"Решётка" теперь эмулирует клавишу Windows; поэтому, keybd=0

#r эмулирует нажатие Win+r, который запускает диалоговое окно "Выполнить".

Некоторые клавиатуры, например Чешская, посылают различные символы при использовании клавиши Shift во включённом и выключенном состоянии Caps Lock. Реализация Send в AutoIt такова, что символы В ВЕРХНЕМ РЕГИСТРЕ отсылаются так, как если бы был нажат Shift, так что оно не будет работать.

Некоторые спец-клавиши могут эмулированы, если заключены в фигурные скобки:

Обратите внимание, Windows не позволяет эмулировать сочетание Ctrl+Alt+Del!

Команда Результат эмуляции
!
#
+
^
<
<>> >
SPACE (пробел)
Enter основной клавиатуры
ALT
или Backspace
или Delete
Стрелка вверх
Стрелка вниз
Стрелка влево
Стрелка вправо
Home
End
или Esc (Escape)
или Insert (Ins)
PageUp
PageDown
— Функциональные клавиши
Tab
Клавиша Print Screen (Prt Scr SysRq)
Левая клавиша Windows
Правая клавиша Windows
Num Lock (on/off/toggle) (включить/выключить/переключить)
Caps Lock (on/off/toggle) (включить/выключить/переключить)
Scroll Lock (on/off/toggle) (включить/выключить/переключить)
для Ctrl+Break
Pause
— Цифры (цифровая клавиатура)
* (цифровая клавиатура)
+ (цифровая клавиатура)
— (цифровая клавиатура)
/ (цифровая клавиатура)
. (цифровая клавиатура)
Enter (цифровая клавиатура)
Клавиша Windows App
Левый Alt
Правый Alt
Левый Ctrl
Правый Ctrl
Левый Shift
Правый Shift
Клавиша спящего режима компьютера
Удерживать Alt в нажатом состоянии, до
Удерживать Shift в нажатом состоянии, до
Удерживать Ctrl в нажатом состоянии, до
Удерживать левый Windows в нажатом состоянии, до
Удерживать правый Windows в нажатом состоянии, до
Выслать клавишу, указав её номер
Только в 2000/XP: Кнопка "назад" в окне просмотра
Только в 2000/XP: Кнопка "вперёд" в окне просмотра
Только в 2000/XP: Кнопка "обновить" в окне просмотра
Только в 2000/XP: Кнопка "остановить" в окне просмотра
Только в 2000/XP: Кнопка "поиск" в окне просмотра
Только в 2000/XP: Кнопка "избранное" в окне просмотра
Только в 2000/XP: Запускает браузер и переходит на домашнюю страницу
Только в 2000/XP: Выключить звук
Только в 2000/XP: Уменьшить звук (на 4% от 100)
Только в 2000/XP: Увеличить звук (на 4% от 100)
Только в 2000/XP: Следующий трек в медиа-плеере
Только в 2000/XP: Предыдущий трек в медиа-плеере
Только в 2000/XP: Остановить воспроизведение в медиа-плеере
Только в 2000/XP: Воспроизведение / пауза в медиа-плеере
Только в 2000/XP: Запуск почтовой программы
Только в 2000/XP: Запуск медиа плеера
Только в 2000/XP: Запуск первой программы пользователя
Только в 2000/XP: Запуск второй программы пользователя

(Когда используется двухзначный код ASCII вы должны подставить в начало 0, иначе будет использована устаревшая кодовая страница 437).

Чтобы эмулировать символ UNICODE вводите код символа (десятичный или шестнадцатеричный), например это эмулирует китайский символ

Одиночную эмуляцию можно повторить, например:

;; Эмулирует нажатие клавиши Del 4 раза
keybd =0

;; Эмулирует нажатие клавиши ‘S’ 30 раз
keybd =0

+ ;; Эмулирует нажатие Shift+Tab 4 раза

Клавиша эмулируется не менее одного раза, даже если указано 0 повторов.

Удерживать клавишу в нажатом состоянии (обычно полезно только для игр)

;; Удерживать клавишу A нажатой
keybd =0

;; Отпустить клавишу A

Устанавливает состояние клавиш CapsLock, NumLock или ScrollLock

;; Включает NumLock
keybd =0

;; Выключает CapsLock
keybd =0

;; Переключает состояние ScrollLock

Большинство клавиатур ноутбуков имеют специальную клавишу Fn. Эта клавиша не может быть эмулирована.

Например, откройте "Свойства папки" (в панели управления) и попробуйте выполнить следующее:

Команда Описание
keybd =0

Перейти к следующему элементу управления (кнопка, checkbox и т.д.) keybd =0

+

Перейти к предыдущему элементу управления. keybd =0

^

Перейти к следующей вкладке (на вкладках диалогового окна) keybd =0

^+

Перейти к предыдущей вкладке. keybd =0

Можно использовать для переключения флажка или нажатия кнопки. keybd =0

Устанавливает галочку (Если это настоящий checkbox.) keybd =0

Снимает галочку. keybd =0

Раскрыть дерево папки SysTreeView32.

Используйте клавишу Alt+Key для доступа к пунктам меню. Кроме того, откройте Блокнот и выполните следующее:
Send("!f") Эмулирует Alt+f, для доступа в меню Блокнота (Alt+ф в русской локализации). Попробуйте другие клавиши!

Команда Описание
keybd =0

Перемещение вниз по меню. keybd =0

Перемещение вверх по меню. keybd =0

Перемещение влево к новому меню или раскрыть подменю. keybd =0

Перемещение вправо к новому меню или свернуть подменю.

Посмотрите справку Windows, нажав Win+F1 для ознакомления с полным списком сочетаний клавиш, если вы не знаете назначение Alt+F4, PrintScreen, Ctrl+C и так далее.

© Аверин Андрей для Total Commander Image Averin-And@yandex.ru

Читайте также:  Browser extensions что это

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *