Указатель функций AutoIt

Использование AutoIt для нажатия кнопки в окне

Функции AutoIt 

Функция — раздел кода, вызываемый из сценария для выполнения совокупности «операций». Имеются два типа функций — встроенные и функции пользователя.

 

Встроенные функции

Описание имеется в разделе список функций, а комментарии по их использованию — в разделе замечания по использованию.

 

Функции пользователя

Объявляются в конструкции Func…EndFunc. Могут принимать параметры и возвращать значения.

Название функции должно начинаться с буквы или символа подчеркивания, остающееся может быть любой комбинацией букв цифр и символов подчеркивания. Примеры названий:

    MyFunc

    Func1

    _My_Func1

 

Пример использования функции умножения на 2:

$val = 10 
For $i = 1 To 10
     $doubled = MyDouble($val)
     MsgBox(0, «», $val & » doubled is » & $doubled)
     $val = $doubled
Next

Exit

Func MyDouble($value)
     $value = $value * 2
     Return $value
EndFunc

 

 

 

 

Отправить сообщение об ошибке
Если нашли ошибку в тексте выделите ее мышкой и нажмите сочетание клавиш Ctrl+ENTER, укажите правильный текст без ошибки.

Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также любые проблемы программирования на различных макроязыках и в скриптовых средах)

Скриптовый язык AutoIT

Скриптовый язык AutoIt — это бесплатный мощный язык для написания сценариев для Windows 2000, XP, 2003, Vista, Server 2008 (для машин с 32 и 64-разрядным процессором) с упором на автоматизацию GUI, который можно применять для решения широкого спектра задач, начиная от автоматизации рутинных операций и заканчивая созданием сложных приложений. Синтаксис AutoIt — бейсикоподобный, поэтому язык достаточно прост в изучении. Сам AutoIt создан на языке Cи и достаточно нетребователен к ресурсам компьютера. Основной автор и разработчик проекта AutoIt — Jonathan Bennet. Взять язык можно здесь. Подробный протокол развития AutoIt можно увидеть здесь. Русскую справку (подробный файл CHM) можно скачать здесь.

Основные возможности языка:

  • работа со строками, математические функции, регулярные выражения, поддержка Unicode, встроенные макропеременные, содержащие системную информацию «только для чтения»; инструкция #include для подключения библиотек; работа с файловой системой и текстовыми файлами; обработка параметров командной строки; анализ и преобразование типов переменных;
  • имитация пользовательского ввода мышью и клавиатурой в любых приложениях;
  • манипуляция окнами запущенных приложений (получение информации и управление);
  • глобальные перехватчики клавиатуры, запуск процедур по нажатию горячих клавиш;
  • компиляция в исполняемые exe-модули;
  • построение GUI; основные элементы управления, а также пользовательские элементы управления, поставляемые как ActiveX; рисование графических примитивов; работа с треем; стандартные диалоги выбора файла и обзора каталогов;
  • поддержка COM с возможностью обработки событий;
  • вызов экспортируемых функций DLL (например, Win32 API), включая callback; работа с API структурами данных;
  • библиотека AutoItX3.dll — ActiveX компонент, позволяющий использовать некоторые возможности AutoIt на произвольном языке программирования через интерфейсы DLL и ActiveX/COM;
  • работа с сетью (протоколы TCP и UDP, загрузка файлов);
  • мониторинг и запуск процессов; запуск процессов от имени указанной учётной записи;
  • работа с реестром;
  • работа с буфером обмена;
  • проигрывание wav, mp3, avi файлов;
  • поддержка User Account Control (UAC) в Windows Vista.

Hello, World!

Файлы скриптов имеют расширение .au3.

Запуск осуществляется командой наподобие следующей:

<путь>\AutoIt3.exe скрипт.au3

Кроме того, если используется полная установка AutoIt, запуск скриптов производится просто двойным щелчком по файлу скрипта.

Простейший скрипт:

; комментарий MsgBox(0, «Заголовок окна», «Привет, AutoIt!»)

Скрипт выше выведет диалоговое окно с приветствием.

Function Reference

Первый аргумент функции MsgBox определяет тип сообщения (в данном случае — окно с единственной кнопкой ОК, без дополнительных опций).

Можно исполнить код на языке AutoIt динамически, из командной строки, например:

AutoIt3.exe /AutoIt3ExecuteLine «MsgBox(0, ‘Hello World!’, ‘Привет!’)»

Следующий пример демонстрирует возможность автоматизации произвольных GUI-приложений:

Run(«notepad.exe») ; запускаем Блокнот WinWaitActive(«Безымянный — Блокнот») ; ожидаем появление окна Блокнота Send(«Какой-то текст.») ; посылаем нажатия (имитируем ввод) WinClose(«Безымянный — Блокнот») ; посылаем окну команду закрытия ; ожидаем появление окна запроса о сохранении: WinWaitActive(«Блокнот», «Текст в файле Безымянный был изменен.») Send(«{ESC}») ; посылаем нажатие Escape (имитируем ввод)

Скрипт выше запускает Блокнот, печатает в него текст, посылает окну Блокнота команду закрытия, а затем отказывается от закрытия, посылая нажатие Escape окну запроса о сохранении. Эти приёмы демонстрируют возможность автоматизации произвольных приложений, даже тех, которые не поддерживают опций командной строки или специальных программных средств автоматизации. AutoIt просто имитирует пользовательский ввод. Такие возможности скриптового языка могут стать спасательным кругом для решения многих проблем, например, автоматической инсталляции некоторых приложений.

Следующий пример демонстрирует назначение глобальных горячих клавиш:

; установка глобального перехвата нажатия клавиши Escape: HotKeySet(«{ESC}», «Terminate») ; установка глобального перехвата нажатия комбинации клавиш Alt+Shift+1 HotKeySet(«+!1», «ShowMessage») ; тело основной программы While 1 Sleep(100) WEnd ; функции Func Terminate() ; по нажатию клавиши Escape Exit 0 ; завершение работы EndFunc Func ShowMessage() ; по нажатию комбинации клавиш Alt+Shift+1 MsgBox(4096, «», «Вы нажали Alt+Shift+1.») EndFunc

Скрипт выше устанавливает глобальный перехват нажатий Escape и Alt+Shift+1 (после запуска в трее появится иконка скрипта). При нажатии Alt+Shift+1 выдаётся сообщение, а при нажатии Escape скрипт завершает работу (активное окно в момент нажатий не имеет значения — перехват глобальный). Эти приёмы позволяют сильно автоматизировать работу пользователя. На нажатие различных клавиш можно «повесить» запуск приложений или выполнение определённых действий в нужном приложении т.п.

Синтаксис работы с COM-объектами прозрачен, как и в большинстве бейсикоподобных языков:

$wsh = ObjCreate(«WScript.Shell») ; создание объекта if @error then exit(1) ; проверка ошибки $wsh.popup(«сообщение») ; вызов метода

Скрипт выше выдаст окно с текстом «сообщение».

Инструменты в поставке

После установки AutoIt вам будут доступны следующие основные инструменты:

  • утилита Aut2exe.exe для создания исполняемых exe-модулей; позволяет компилировать скрипты как консольные и как GUI-приложения;
  • утилита AU3Info.exe для отслеживания различных характеристик окон под курсором мыши, важный инструмент написания скриптов для управления окнами;
  • AutoIt.chm — основной файл документации (англ.), использующий файлы AutoIt3.chm и UDFs3.chm; документация обширна и подробна;
  • в каталоге \Include содержится свыше 80 готовых скриптов для подключения их директивой #include; это библиотеки пользовательских функций (UDF — User Defined Function), созданных энтузиастами AutoIt, которые можно использовать в любом скрипте; все эти функции документированы в файле справки, таких функций более двухсот пятидесяти;
  • в каталоге \Examples содержится свыше двух тысяч примеров скриптов; подавляющее большинство из них является составной частью файла справки (каталог \Examples\Helpfile);

Примечания:

  • для версий AutoIt, более ранних, чем версия на момент написания данной статьи, работает утилита Exe2Aut.exe для обратной декомпиляции ранее откомпилированных скриптов (на декомпиляцию может быть установлен пароль);
  • версии AutoIt, более ранние, чем версия на момент написания данной статьи, поддерживают версии Windows 9x.

Другие примеры работы

Следующий пример демонстрирует использование Win32 API и организацию callback (функции обратного вызова), а также использование встроенных возможностей для получения информации об окнах (функции WinGetTitle и WinGetState):

;Создание функции обратного вызова $handle = DLLCallbackRegister(‘_EnumWindowsProc’, ‘int’, ‘hwnd;lparam’) ;Вызвать API для перебора окон DllCall(‘user32.dll’, ‘int’, ‘EnumWindows’, ‘ptr’, DllCallbackGetPtr($handle), ‘lparam’, 10) ;Освободить функцию обратного вызова DllCallbackFree($handle) ;Функция обратного вызова Func _EnumWindowsProc($hWnd, $lParam) If WinGetTitle($hWnd) <> » And BitAnd(WinGetState($hWnd), 2) Then $res = MsgBox(1, WinGetTitle($hWnd), _ ‘$hWnd=’ & $hWnd & @CRLF & _ ‘lParam=’ & $lParam & @CRLF & _ ‘$hWnd(type)=’ & VarGetType($hWnd)) If $res=2 Then Return 0 ;Нажатие кнопки «Отмена» останавливает дальнейший перебор окон EndIf Return 1 ;Продолжить перебор окон EndFunc

Пример выше выведет информацию об открытых и в данный момент видимых окнах в системе, демонстрируя информацию о каждом окне отдельным сообщением.

Нажатие кнопки «Отмена» в любой момент останавливает дальнейший перебор окон.

Следующий пример демонстрирует работу со структурами Win32 API, а также элементы построения GUI (окно выбора файла):

;Открытие файла библиотеки значков $sFileName = FileOpenDialog(‘Выберите файл, содержащий значки’, _ @SystemDir , ‘Файлы значков(*.dll;*.ocx)’, _ 1, ‘SHELL32.DLL’) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $stIcon = DllStructCreate(‘int’) ;Структура для номера иконки ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;преобразование строки имени файла в Unicode $nBuffersize = DllCall(‘KERNEL32.DLL’, _ ‘int’,’MultiByteToWideChar’, _ ‘int’, 0, _ ‘int’, 0x00000001, _ ‘str’, $sFileName, _ ‘int’, -1, _ ‘ptr’, 0, _ ‘int’, 0) $stString = DLLStructCreate(«byte[» & 2 * $nBuffersize[0] & «]») DllCall(‘KERNEL32.DLL’, _ ‘int’, ‘MultiByteToWideChar’, _ ‘int’, 0, _ ‘int’, 0x00000001, _ ‘str’, $sFileName, _ ‘int’, -1, _ ‘ptr’, DllStructGetPtr($stString), _ ‘int’, $nBuffersize[0]) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Вызов функции диалога выбора значков DllCall(‘SHELL32.DLL’, _ ‘none’, 62, _ ‘hwnd’, 0, _ ‘ptr’, DllStructGetPtr($stString), _ ‘int’, DllStructGetSize($stString), _ ‘ptr’, DllStructGetPtr($stIcon)) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;обратное преобразование строки имени файла в однобайтную кодировку $nBuffersize = DllCall(‘KERNEL32.DLL’, _ ‘int’, ‘WideCharToMultiByte’, _ ‘int’, 0, _ ‘int’, 0x00000200, _ ‘ptr’, DllStructGetPtr($stString), _ ‘int’, -1, _ ‘ptr’, 0, _ ‘int’, 0, _ ‘ptr’, 0, _ ‘ptr’, 0) $stFile = DLLStructCreate(‘char[‘ & $nBuffersize[0] & ‘]’) DllCall(‘KERNEL32.DLL’, _ ‘int’, ‘WideCharToMultiByte’, _ ‘int’, 0, _ ‘int’, 0x00000200, _ ‘ptr’, DllStructGetPtr($stString), _ ‘int’, -1, _ ‘ptr’, DllStructGetPtr($stFile), _ ‘int’, $nBuffersize[0], _ ‘ptr’, 0, _ ‘ptr’, 0) $sFileName = DllStructGetData($stFile, 1) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $nIconIndex = DllStructGetData($stIcon, 1) ;Получение номера иконки ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Контрольное сообщение Msgbox(262192, ‘Info’, _ ‘Выбран файл: ‘ & $sFileName & @CR & _ ‘Иконка: ‘ & $nIconIndex) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $stBuffer = 0 $stFile = 0 $stIcon = 0

Скрипт выше выведет диалог открытия файла, затем диалог выбора иконки, а затем продемонстрирует номер выбранной иконки.

Ещё один пример работы со структурами Win32 API:

$startColor = 0xff0000 Const $WM_INITDIALOG = 0x0110 Const $CC_ANYCOLOR = 0x100 Const $CC_RGBINIT = 0x1 Const $CC_FULLOPEN = 0x2 Const $CC_PREVENTFULLOPEN = 0x4 Const $CC_SHOWHELP = 0x8 Const $CC_ENABLEHOOK = 0x10 Const $CC_ENABLETEMPLATE = 0x20 Const $CC_ENABLETEMPLATEHANDLE = 0x40 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Создание структуры CHOOSECOLOR $CHOOSECOLOR = DllStructCreate( _ ‘dword;’ & _ ;Размер структуры, байт ‘int;’ & _ ;Дескриптор окна породившего диалог ‘int;’ & _ ;Хэндл участка памяти содержащего шаблон ‘int;’ & _ ;Начальный цвет, отсюда же происходит возврат выбранного цвета ‘ptr;’ & _ ;Указатель на 16 элементный массив палитры ‘dword;’ & _ ;Комбинация флагов ‘int;’ & _ ;Данные процедуры-фильтра ‘ptr;’ & _ ;Указатель на процедуру фильтр ‘ptr’) ;Указатель на строку-имя шаблона диалога ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Создание структуры набора цветов $template = » for $i=1 to 16 $template=$template & «int;» next $template = StringTrimRight($template, 1) Local $palette = DllStructCreate($template) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Заполнение структуры набора цветов DllStructSetData($palette, 1, $startColor) for $i=2 to 16 DllStructSetData($palette, $i, 0xffffff) next ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Заполнение структуры CHOOSECOLOR DllStructSetData($CHOOSECOLOR, 1, DllStructGetSize($CHOOSECOLOR)) DllStructSetData($CHOOSECOLOR, 2, 0) DllStructSetData($CHOOSECOLOR, 4, $startColor) DllStructSetData($CHOOSECOLOR, 5, DllStructGetPtr($palette)) DllStructSetData($CHOOSECOLOR, 6, BitOR($CC_ANYCOLOR, $CC_FULLOPEN, $CC_RGBINIT)) DllStructSetData($CHOOSECOLOR, 7, $WM_INITDIALOG) DllStructSetData($CHOOSECOLOR, 8, «CCHookProc») ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Вызов диалога $result = DllCall(‘comdlg32.dll’, ‘long’, ‘ChooseColor’, _ ‘ptr’, DllStructGetPtr($CHOOSECOLOR)) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Выделение компонент цвета if not $result[0] then return -1 $color = DllStructGetData($CHOOSECOLOR, 4) $color = hex($color) $blue = StringMid ($color,3,2) $green = StringMid ($color,5,2) $red = StringMid ($color,7,2) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Контрольное сообщение msgbox(64, «Выбранный цвет», _ «Красный: » & dec($red) & @CRLF & _ «Зеленый: » & dec($green) & @CRLF & _ «Синий: » & dec($blue)) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ $CHOOSECOLOR = 0 $palette = 0

Скрипт выше выводит стандартный диалог выбора цвета, а затем демонстрирует выбранные компоненты цвета.

Ещё один пример работы со структурами Win32 API:

$volStr = DllStructCreate(‘char[255];char[255];udword;udword;udword’) $result = DllCall(‘KERNEL32.dll’, _ ‘long’, ‘GetVolumeInformationA’, _ ‘str’, ‘C:\’, _ ‘str’, DllStructGetPtr($volStr, 1), _ ‘long’, 255, _ ‘long’, DllStructGetPtr($volStr, 3), _ ‘long’, DllStructGetPtr($volStr, 4), _ ‘long’, DllStructGetPtr($volStr, 5), _ ‘str’, DllStructGetPtr($volStr, 2), _ ‘long’, 255) MsgBox(262192, ‘Информация о диске’, _ ‘Метка тома: ‘ & $result[2] & @CR & _ ‘Серийный номер: ‘ & DllStructGetData($volStr, 3) & @CR & _ ‘Файловая структура: ‘ & $result[7])

Скрипт выше выводит информацию о диске C: (метку тома, серийный номер и файловую структуру).


Возможно написание консольных скриптов (AutoIt умеет работать с консолью напрямую). Однако, пока скрипт не будет явно скомпилирован как консольный, утилитой %ProgramFiles%\AutoIt3\Aut2Exe\Aut2exe.exe (с флажком «Console?» в интерактивном режиме или параметром /console в пакетном режиме работы утилиты), такой скрипт не будет наследовать окно консоли родительского процесса (например, окно консоли cmd.exe), а будет работать со своей консолью.

Поэтому в родительском окне того же cmd.exe организовать какой-либо ввод/вывод будет нельзя. Для того, чтобы увидеть результат работы скрипта в окне консоли, скрипт должен быть явно скомпилирован как консольный. Тем не менее, разницы в программном доступе, независимо от того, скомпилирован ли скрипт как GUI или консольное приложение, нет. Пример консольного скрипта:

; Вывод на консоль (используется Stdout, стандартный дескриптор 1): ConsoleWrite(«Output to console» & @CRLF) ; Вывод на консоль (используется Stderr, стандартный дескриптор 2): ConsoleWriteError(«Output error to console» & @CRLF) ; Ввод с консоли (используется Stdin, стандартный дескриптор 0): $strValue = ConsoleRead() ConsoleWrite(«Byte read: [» & @extended & «]; Value: [» & $strValue & «]» & @CRLF)

Если скомпилировать вышеприведённый скрипт как консольное приложение test.exe, его вывод будет отображаться, и можно передать ему данные, например, такой командой:

test.exe < test.txt

В любом случае, с подобным скриптом можно будет работать в командной строке примерно таким способом:

autoit3 test.au3 < test.txt 1>StdOut.txt 2>StdErr.txt

В набор пользовательских функций (UDF — User Defined Function) входит библиотека WinAPI.au3, в которой присутствуют функции:

  • _WinAPI_AttachConsole([$iProcessID = -1]), позволяющая присоединить свою консоль к любому процессу по его идентификатору ($iProcessID), в том числе и к текущему ($iProcessID = -1);
  • _WinAPI_WriteConsole($hConsole, $sText), позволяющая делать вывод на консоль.

Ну, и, конечно, через встроенную функцию DllCall() можно использовать функции Win API по работе с консолью.


Примеры построения GUI вы можете найти в каталоге \Examples\GUI установки AutoIt, а здесь — несколько скриншотов:

Программа Depo, написанная на AutoIt, которую вы можете взять здесь:

Программа Анализ гиперссылок, написанная на AutoIt:

Примечание: AutoIt поддерживает пользовательские (сторонние) элементы управления, поставляемые как ActiveX. Пример использования вы можете посмотреть в справке, в статье о функции GUICtrlCreateObj.

Людоговский Александр, 20.01.2009г.
Благодарность за помощь в написании статьи — alexii и Poltergeyst.

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.

Function Reference


Send

Sends simulated keystrokes to the active window.

Parameters

keys The sequence of keys to send.
flag [optional] Changes how «keys» is processed:
    $SEND_DEFAULT (0) = Text contains special characters like + and !

to indicate SHIFT and ALT key-presses (default).
    $SEND_RAW (1) = keys are sent raw.

Constants are defined in «AutoItConstants.au3».

Return Value

None.

Remarks

See the Appendix for some tips on using Send(). 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 {ASC} at the bottom of the table below).

The «Send()» command syntax is similar to that of ScriptIt and the Visual Basic «SendKeys» command. Characters are sent as written with the exception of the following characters:

‘!’
This tells AutoIt to send an ALT keystroke, therefore Send(«This is text!a») would send the keys «This is text» and then press «ALT+a».

N.B. Some programs are very choosy about capital letters and ALT keys, i.e., «!A» is different from «!a».

Автокликер, авто-нажатие на клавиши, скрипт, имитирующий клавиатуру

The first says ALT+SHIFT+A, the second is ALT+a. If in doubt, use lowercase!

‘+’
This tells AutoIt to send a SHIFT keystroke; therefore, Send(«Hell+o») would send the text «HellO». Send(«!+a») would send «ALT+SHIFT+a».

‘^’
This tells AutoIt to send a CONTROL keystroke; therefore, Send(«^!a») would send «CTRL+ALT+a».

N.B. Some programs are very choosy about capital letters and CTRL keys, i.e., «^A» is different from «^a». The first says CTRL+SHIFT+A, the second is CTRL+a. If in doubt, use lowercase!

‘#’
The hash now sends a Windows keystroke; therefore, Send(«#r») would send Win+r which launches the Run() dialog box.

You can set SendCapslockMode to make CAPS LOCK disabled at the start of a Send() operation and restored upon completion.
However, if a user is holding down the Shift key when a Send() function begins, text may be sent in uppercase.
One workaround is to Send(«{SHIFTDOWN}{SHIFTUP}») before the other Send() operations.

Certain keyboards as the Czech keyboard sends different characters when using the Shift Key or with CAPS LOCK enabled while sending a character. Due to the send AutoIt implementation the CAPS LOCKed character will be sent as a Shifted character so it will not work.
Certain special keys can be sent and should be enclosed in braces:

N.B. Windows does not allow the simulation of the «CTRL-ALT-DEL» combination!

Send() Command (if zero flag) Resulting Keypress
{!} !
{#} #
{+} +
{^} ^
{{} {
{}} }
{SPACE} SPACE
{ENTER} ENTER key on the main keyboard
{ALT} ALT
{BACKSPACE} or {BS} BACKSPACE
{DELETE} or {DEL} DELETE
{UP} Up arrow
{DOWN} Down arrow
{LEFT} Left arrow
{RIGHT} Right arrow
{HOME} HOME
{END} END
{ESCAPE} or {ESC} ESCAPE
{INSERT} or {INS} INS
{PGUP} PageUp
{PGDN} PageDown
{F1} — {F12} Function keys
{TAB} TAB
{PRINTSCREEN} Print Screen key
{LWIN} Left Windows key
{RWIN} Right Windows key
{NUMLOCK on} NUMLOCK (on/off/toggle)
{CAPSLOCK off} CAPSLOCK (on/off/toggle)
{SCROLLLOCK toggle} SCROLLLOCK (on/off/toggle)
{BREAK} for Ctrl+Break processing
{PAUSE} PAUSE
{NUMPAD0} — {NUMPAD9} Numpad digits
{NUMPADMULT} Numpad Multiply
{NUMPADADD} Numpad Add
{NUMPADSUB} Numpad Subtract
{NUMPADDIV} Numpad Divide
{NUMPADDOT} Numpad period
{NUMPADENTER} Enter key on the numpad
{APPSKEY} Windows App key
{LALT} Left ALT key
{RALT} Right ALT key
{LCTRL} Left CTRL key
{RCTRL} Right CTRL key
{LSHIFT} Left Shift key
{RSHIFT} Right Shift key
{SLEEP} Computer SLEEP key
{ALTDOWN} Holds the ALT key down until {ALTUP} is sent
{SHIFTDOWN} Holds the SHIFT key down until {SHIFTUP} is sent
{CTRLDOWN} Holds the CTRL key down until {CTRLUP} is sent
{LWINDOWN} Holds the left Windows key down until {LWINUP} is sent
{RWINDOWN} Holds the right Windows key down until {RWINUP} is sent
{ASC nnnn} Send the ALT+nnnn key combination
{BROWSER_BACK} Select the browser «back» button
{BROWSER_FORWARD} Select the browser «forward» button
{BROWSER_REFRESH} Select the browser «refresh» button
{BROWSER_STOP} Select the browser «stop» button
{BROWSER_SEARCH} Select the browser «search» button
{BROWSER_FAVORITES} Select the browser «favorites» button
{BROWSER_HOME} Launch the browser and go to the home page
{VOLUME_MUTE} Mute the volume
{VOLUME_DOWN} Reduce the volume
{VOLUME_UP} Increase the volume
{MEDIA_NEXT} Select next track in media player
{MEDIA_PREV} Select previous track in media player
{MEDIA_STOP} Stop media player
{MEDIA_PLAY_PAUSE} Play/pause media player
{LAUNCH_MAIL} Launch the email application
{LAUNCH_MEDIA} Launch media player
{LAUNCH_APP1} Launch user app1
{LAUNCH_APP2} Launch user app2
{OEM_102} Either the angle bracket key or the backslash key on the RT 102-key keyboard

To send the ASCII value A (same as pressing ALT+065 on the numeric keypad)
    Send(«{ASC 065}»)

(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 (decimal or hex), for example this sends a Chinese character
    Send(«{ASC 2709}») or Send(«{ASC 0xA95}»)

Single keys can also be sent repeated:
    Send(«{DEL 4}»)    ;Presses the DEL key 4 times
    Send(«{S 30}») ;Sends 30 ‘S’ characters
    Send(«+{TAB 4}») ;Presses SHIFT+TAB 4 times

No key is sent if the count is zero allowing the count to be set programatically:
    Send(«{M » & $iCount & «}»)    ;Presses the M key as many times as set in the $iCount variable

To hold a key down
    Send(«{a down}») ;Holds the A key down
    Send(«{a up}») ;Releases the A key

To set the state of the capslock, numlock and scrolllock keys
    Send(«{NumLock on}») ;Turns the NumLock key on
    Send(«{CapsLock off}») ;Turns the CapsLock key off
    Send(«{ScrollLock toggle}») ;Toggles the state of ScrollLock

If you wish to use a variable for the count, try
    $n = 4
    Send(«+{TAB » & $n & «}»)

If you wish to send the ASCII value A four times, then try
    $x = Chr(65)
    Send(«{» & $x & » 4}»)

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

Note, by setting the flag parameter to 1 the above «special» processing will be disabled. This is useful when you want to send some text copied from a variable and you want the text sent exactly as written.

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

Send(«{TAB}») Navigate to next control (button, checkbox, etc)
Send(«+{TAB}») Navigate to previous control.
Send(«^{TAB}») Navigate to next WindowTab (on a Tabbed dialog window)
Send(«^+{TAB}») Navigate to previous WindowTab.
Send(«{SPACE}») 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(«{NumPadMult}») 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(«{DOWN}») Move down a menu.
Send(«{UP}») Move up a menu.
Send(«{LEFT}») Move leftward to new menu or expand a submenu.
Send(«{RIGHT}») Move rightward to new menu or collapse a submenu.

When running a script on a remote computer through a program as psexec (www.sysinternals.com) or beyondexec (www.beyondlogic.org) it is necessary, specially when sending strokes to a program launch by the script with a Run() function, to use ControlSend() or other ControlXXX functions to directly communicate with the control. Send() even with Opt(«SendAttachMode», 1) will not work.
Using the -s mode when submitting can help to have better rights on the remote computer.

Opt(«SendKeyDelay»,…) alters the the length of the brief pause in between sent keystrokes.
Opt(«SendKeyDownDelay»,…) alters the length of time a key is held down before being released during a keystroke.
Set both «SendKeyDelay» and «SendKeyDownDelay» to 0 to remove all delays when sending keystrokes.

This may be required under certain circumstances, for example, when locking the system («#l») it may be necessary to remove the delays in order to prevent the WIN key from being stuck down.

Related

BlockInput, ControlSend, HotKeySet, SendAttachMode (Option), SendKeepActive, SendKeyDelay (Option), SendKeyDownDelay (Option), WinMenuSelectItem

Example

Example()Func Example()    ; Simulate the key combination Win + R to open the Run dialogue window.    Send(«#r»)    ; Wait 10 seconds for the Run dialogue window to appear.    WinWait(«Run»,»»,10)    ; Simulate entering notepad.exe and pressing the ‘ENTER’ key.    Send(«notepad.exe{Enter}»)    ; Wait 10 seconds for the Notepad window to appear.    Local$hWnd=WinWait(«[CLASS:Notepad]»,»»,10)    ; Simulate entering the following string and pressing the ‘F5’ key to input the date and time into edit control of Notepad.    Send(«Today’s time/date is {F5}»)    ; Close the Notepad window using the handle returned by WinWait.    WinClose($hWnd)    ; Now a screen will pop up and ask to save the changes, the classname of the window is called    ; «#32770» and simulating the «TAB» key to move to the second button in which the «ENTER» is simulated to not «save the file»    WinWaitActive(«[CLASS:#32770]»)    Sleep(500)    Send(«{TAB}{ENTER}»)EndFunc   ;==>Example

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

Закрыть меню