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
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 ( " +
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 ( "
Некоторые клавиатуры, например Чешская, посылают различные символы при использовании клавиши 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 ( " +
Клавиша эмулируется не менее одного раза, даже если указано 0 повторов.
Удерживать клавишу в нажатом состоянии (обычно полезно только для игр)
Send ( " " ) ; Удерживать клавишу A нажатой
Send ( " " ) ;Отпустить клавишу A
Устанавливает состояние клавиш CapsLock, NumLock или ScrollLock
Send ( "
Send ( "
Send ( "
Если вы хотите указать количество нажатий в переменной, попробуйте
Если вы хотите эмулировать 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
+
Клавиша эмулируется не менее одного раза, даже если указано 0 повторов.
Удерживать клавишу в нажатом состоянии (обычно полезно только для игр)
;; Удерживать клавишу A нажатой
keybd =0
Устанавливает состояние клавиш CapsLock, NumLock или ScrollLock
keybd =0
keybd =0
Большинство клавиатур ноутбуков имеют специальную клавишу Fn. Эта клавиша не может быть эмулирована.
Например, откройте "Свойства папки" (в панели управления) и попробуйте выполнить следующее:
Команда | Описание |
---|---|
keybd =0 |
+
^
^+
Используйте клавишу Alt+Key для доступа к пунктам меню. Кроме того, откройте Блокнот и выполните следующее:
Send("!f") Эмулирует Alt+f, для доступа в меню Блокнота (Alt+ф в русской локализации). Попробуйте другие клавиши!
Команда | Описание |
---|---|
keybd =0 |
Посмотрите справку Windows, нажав Win+F1 для ознакомления с полным списком сочетаний клавиш, если вы не знаете назначение Alt+F4, PrintScreen, Ctrl+C и так далее.
© Аверин Андрей для Total Commander Image Averin-And@yandex.ru