Вступление
AutoIt v3 - бесплатный скриптовый язык, созданный для автоматизации графического интерфейса пользователя Windows и создания скриптов общего назначения. Он использует сочетание имитации нажатий клавиш, движений мыши и работу с окнами/управляющими элементами, чтобы автоматизировать задачи в случаях, когда использование других языков невозможно или ненадежно. AutoIt имеет малый размер и не требует наличия каких-либо сторонних библиотек в системе.
AutoIt был первоначально создан для развёртывания PC, когда нужно надежно автоматизировать настройку множества PC, независимо от используемого на них программного обеспечения. По прошествии времени AutoIt стал мощным языком, который поддерживает сложные выражения, функции пользователя.
Особенности:
- Простой и лёгкий для изучения синтаксис.
- Симуляция нажатий клавиш и движений мыши.
- Управление окнами и процессами.
- Взаимодействие со всеми стандартными управляющими элементами.
- Скрипты могут быть скомпилированы в независимые исполняемые файлы.
- Создание графического интерфейса пользователя (GUI).
- Поддержка COM.
- Регулярные выражения.
- Прямой вызов функций из внешних DLL и функций Windows API.
- Детализированный файл справки и большой форум поддержки.
Обзор языка - типы данных
В AutoIt есть только один тип данных, называемый Variant (нетипизированный тип данных). Variant может содержать как числа, так и строки, которые интерпретируются по разному в зависимости от ситуации. К примеру, если вы попытаетесь перемножить два Variant, то они будут интерпретированы, как числа, а если вы попытаетесь их объединить (оператор ), то они будут интерпретированы, как строки.
Например:
$a=10*20; $a = 200 - число(* используется для умножения)
$a=10; $a = 1020 - строка (используется для объединения строк)
Числа
Числа могут быть стандартными десятичными числами или представлены в шестнадцатеричном или экспоненциальном виде записи.
Строки
Строки заключаются в двойные кавычки. Если необходимо использовать двойные кавычки в самой строке, то они дублируются, также строки также можно заключать в 'одинарные' кавычки. Можно совмещать оба типа кавычек, чтобы избежать дублирования кавычек в строках. Это позволяет легче читать и редактировать код.
Булев тип данных
Булев - это логическое значение. Для него существует только два различных значения: True (Истина) и False (Ложь).
Он может использоваться при присвоении переменных, вместе с логическими операторами and, or и not.
Если числа используются, как булевы значения, применяются следующие правила:
- только 0 соответствует значению False;
- любые другие числа соответствуют значению True.
Если вы используете арифметические операторы вместе с булевыми значениями (что не рекомендуется!), применяются следующие правила:
- булево значение True конвертируется в числовое значение 1;
- булево значение False конвертируется в числовое значение 0.
Если вы используете булево значение в качестве строки, применяются следующие правила:
- булево значение True конвертируется в строковое значение True;
- булево значение False конвертируется в строковое значение False.
Если же вы используете строку в качестве булева значения, применяются другие правила:
- только пустая строка () соответствует булевому значению False;
- любая другая строка (в том числе и 0, False) соответствует булевому значению True.
Бинарный тип данных
Бинарный тип может содержать двоичные данные. Значение переменной такого типа конвертируется в шестнадцатеричную запись при использовании этой переменной.
Типы данных и границы
Подтип данных |
Границы и примечания |
Int32 |
32-битное знаковое число |
Int64 |
64-битное знаковое число |
Double |
double-precision(?) число с плавающей точкой. |
String |
Может содержать до 2147483647 символов. |
Binary |
Двоичные данные, может содержать до 2147483647 байтов. |
Pointer |
Указатель на ячейку памяти. 32-битный или 64-битный, в зависимости от используемой версии AutoIt. |
Обзор языка - переменные
Переменная - это просто место для хранения данных в памяти, откуда они могут быть быстро получены. Каждая переменная имеет имя, которое начинается с символа $ и может содержать символы латинского алфавита, цифры и знак нижнего подчёркивания _. Все переменные не зависят от регистра.
Объявление переменных
Переменные объявляются и создаются с помощью ключевых слов Local и Global, а также с помощью Dim, хотя это не рекомендуется.
Объявление констант
Константы объявляются и создаются с помощью ключевого слова Const и должны быть объявлены с присвоением значения.
Константы могут быть объявлены и инициализированы с помощью ключевого слова Enum.
После создания константы, её значение нельзя изменить. Уже существующую переменную нельзя объявить константой.
Область видимости переменных
Область видимости переменной определяется тем, где и как вы её объявляете. Если вы объявляете переменную в начале скрипта или за пределами любой функции, она создаётся, как глобальная (Global) переменная, и доступна из любого места скрипта.
Если вы объявляете переменную внутри функции, она создаётся, как локальная (Local) переменная, и доступна только в этой же самой функции. Переменные, созданные внутри функции, автоматически уничтожаются после окончания её работы.
По умолчанию, переменные, объявленные с помощью Dim или созданные с помощью обычного присвоения внутри функции, получают локальную (Local) область видимости, если не существует глобальной переменной с таким именем (в этом случае глобальная переменная используется повторно). Это поведение может быть изменено с помощью ключевых слов Local и Global, которые позволяют принудительно объявить переменную в нужной области видимости.
Массивы
Массив - это переменная, содержащая серию элементов данных одного типа. Доступ к каждому элементу такой переменной возможен по его индексу. Индекс можно задавать переменной или выражением, что позволяет строить сложные пути для доступа к элементам массива. Массивы также могут быть многомерными, при использовании серии индексов. Максимальная размерность массива: 64 измерения. Общее число элементов массива не может превышать 2^24 (16 777 216). Перед использованием массива необходимо объявить его, указав размеры и область видимости, используя одно из ключевых слов Global, Local, Static.
Типы данных в массиве
Как правило массив содержит элементы только одного типа данных. Но поскольку переменная типа Variant в AutoIt может содержать любые данные (числа, строки, булевы значения), это позволяет содержать в массиве данные любого типа. Таким образом, массив в AutoIt может одновременно содержать в себе данные разного типа, и даже другие массивы. Использование массива, как элемента данных другого массива, может повлиять на скорость выполнения вашего скрипта.
Обзор языка - Макросы
AutoIt имеет некоторое количество макросов, специальных переменных только для чтения.Макрос начинается с символа @, а не $, что позволяет легко отличать их от обычных переменных. Как и обычные переменные, макросы можно использовать в выражениях, однако им нельзя присвоить какое-либо значение. Макросы обычно используются для быстрого доступа к системной информации, такой, как, например, путь к каталогу Windows или имя текущего пользователя.
Макросы достаточно быстро получают информацию, но при использовании цикла лучше определить значение макроса перед входом в цикл, а в цикле использовать переменную со значением макроса.
Описание макросов
Ниже предоставлен список основных макросов, доступных в AutoIt.Макрос |
Описание |
@ComputerName |
Возвращает сетевое имя компьютера |
@DesktopHeight |
Возвращает высоту рабочего стола в пикселях (вертикальное разрешение экрана) |
@DesktopWidth |
Возвращает ширину рабочего стола в пикселях (горизонтальное разрешение экрана) |
@error |
Состояние флага ошибки. Функция SetError. |
@HOUR |
Возвращает значение часов на часах в 24-часовом формате. Диапазон значений от 00 до 23 |
@IPAddress1 |
Возвращает IP-адрес первого сетевого адаптера. Может вернуть 127.0.0.1 на некоторых компьютерах |
@IPAddress2 |
Возвращает IP-адрес второго сетевого адаптера. Возвращает 0.0.0.0, если неприменимо |
@MDAY |
Возвращает номер текущего дня месяца. Диапазон значений от 01 до 31 |
@MIN |
Возвращает значение минут на часах. Диапазон значений от 00 до 59 |
@MON |
Возвращает номер текущего месяца. Диапазон значений от 01 до 12 |
@MSEC |
Возвращает значение миллисекунд на часах. Диапазон значений от 000 до 999 |
@OSType |
Возвращает WIN32_NT в 2000/XP/2003/Vista/2008/Win7/2008R2 |
@OSVersion |
Возвращает одно из следующих значений. |
@SEC |
Возвращает значение секунд на часах. Диапазон значений от 00 до 59 |
@SW_DISABLE |
Запретить доступ к окну. |
@SW_ENABLE |
Разрешить доступ к окну. |
@SW_MAXIMIZE |
Развернуть окно на весь экран. |
@SW_RESTORE |
Активировать и отобразить окно. Если окно свёрнуто или развёрнуто, система восстановит его оригинальный размер и позицию. |
@SW_SHOW |
Активировать и отобразить окно с его текущим размером и позицией. |
@UserName |
Возвращает ID пользователя, от чьего имени работает процесс, выполняющий скрипт. |
@WDAY |
>Возвращает числовое значение дня недели. |
@YDAY |
Возвращает номер текущего дня года. Диапазон значений от 001 до 366 |
@YEAR |
Возвращает номер текущего года. Например: 2010 |
Обзор языка - операторы
AutoIt поддерживает следующие операторы присвоения, математические операторы, операторы сравнения и логические операторы.
Оператор |
Описание |
Операторы присвоения |
|
= |
Присвоение. |
+= |
Добавляющее присвоение. |
-= |
Отнимающее присвоение. |
*= |
Умножающее присвоение. |
/= |
Делящее присвоение. |
= |
Объединяющее присвоение. |
Математические операторы |
|
+ |
Сложение |
- |
Вычитание |
* |
Умножение |
/ |
Деление |
Объединение строк.Например один 10 |
|
^ |
Возведение в степень. |
Операторы сравнения |
|
= |
Истинно, если значение слева равно значению справа. |
== |
Истинно, если строки равны между собой. Учитывает регистр. |
Истинно, если значения не равны между собой |
|
Истинно, если первое значение больше второго. Строки сравниваются в лексикографическом* порядке. |
|
= |
Истинно, если первое значение больше или равно второму. Строки сравниваются в лексикографическом* порядке. |
Истинно, если первое значение меньше второго. Строки сравниваются в лексикографическом* порядке. |
|
= |
Истинно, если первое значение меньше или равно второму. Строки сравниваются в лексикографическом* порядке. |
Логические операторы |
|
And |
Логическая операция И. |
Or |
Логическая операция ИЛИ. |
Not |
Логическая операция НЕ. |
Обзорязыка - условные операторы
Часто необходимо изменить естественный порядок выполнения скрипта в зависимости от условия или серии условий. В AutoIt доступны следующие условные операторы:
- If...Then...Else.
- Select...Case.
- Switch...Case.
Все три оператора похожи и предназначены для выполнения разного кода в зависимости от данного условия.
$var = -20
If $var 0 Then
MsgBox(0, Пример, $varположительное!)
ElseIf $var 0 Then
MsgBoxПример, $var отрицательное!)
Else
MsgBox(0,Пример, $var равно нулю.)
EndIf
Оператор Select очень похож, но обычно используется в ситуации, когда необходимо проверить множество условий:
$var = 30
Select
Case $var 1 AND $var =10
MsgBox(0, Пример, $varбольше 1)
Case $var 10 AND $var = 20
MsgBox(0, Пример, $varбольше 10)
Case $var 20
MsgBox(0, Пример, $varбольше 20)
EndSelect
Оператор Switch очень похож на Select, но обычно используется, когда одно и тоже выражение сравнивается с различными значениями.
$var =30
SwitchInt($var)
Case 1 To 10
MsgBox(0, Пример, $varбольше 1)
Case 11To20
MsgBox(0, Пример, $varбольше 10
Case Else
MsgBox(0, Пример, $var больше 20 или меньше 0 или равно 0)
EndSwitch
Для любого из этих операторов будет выполнена первая группа операторов, следующая после истинного условия. Все остальные условия и операторы будут проигнорированы.
Обзорязыка - операторы циклов
Цикл - это часть скрипта, которую необходимо выполнить несколько раз. Можно задать как конкретное число повторений, а можно повторять выполнение кода в зависимости от условия, когда число повторений заранее неизвестно.
В AutoIT доступны следующие операторы циклов:
- For...Next.
- While...WEnd.
- Do...Until.
- For...In...Next.
For...Next-цикл, основанный на счётчике.
For variable = start To stop [Step stepval]
statements
...
Next
Параметры
variable |
Переменная, используемая в качестве счётчика. |
start |
Начальное число переменной счётчика. |
stop |
Конечное число переменной счётчика. |
stepval |
[необязательный] Число, на которое будет увеличена переменная счётчика variable при каждом шаге цикла. Допускаются числа с плавающей точкой. По умолчанию 1. |
statements |
Многострочный блок операторов, который выполняется, при условиях указанных в примечании. |
While...Wend - цикл с предусловием
While expression
statements
WEnd
Параметры
Выражение, которое при вычислении может принять значение True или False. |
|
statements |
Многострочный блок операторов, который выполняется, если выражение expression равно True |
Do...Until - цикл с постусловием.
Do
statements
Until expression
Параметры
Выражение, которое при вычислении может принять значение True или False. |
|
statements |
Многострочный блок операторов, который выполняется, при входе в цикл или если выражение expression равно False |
For...In...Next - перечисляет элементы в коллекцииобъекта или массива
For variable In expression
statements
Next
Параметры
variable |
Переменная, которой будет присваиваться значение элемента |
Должно быть выражением, возвращающим объект или массив с как минимум одним элементом. |
|
statements |
Многострочный блок операторов, который выполняется, пока происходит перечисление элементов. |
Обзор языка - пользовательские функции
Функция - это участок кода, который может быть вызван из другого места скрипта для выполнения некоторой операции.В AutoIt есть два типа функций, это встроенные функции и пользовательские функции.
Встроенные функции
Ниже указан список основных функций, а полный список расположен по ссылке.
Пользовательские функции
Пользовательские функции объявляются с помощью ключевого выражения Func...EndFunc.
Функции могут принимать параметры и возвращать значения, если это требуется.
Имя функции должно начинаться с буквы латинского алфавита или знака подчёркивания _, оставшаяся часть имени может быть любой комбинацией букв латинского алфавита, цифр или знаков подчёркивания.
Описание основных функций
Ниже предоставлен список основных функций, доступных в AutoIt.Кликнете по имени функции для просмотра детального описания.
Функция |
Описание |
Abs |
Вычисляет абсолютное значение (модуль) числа. |
Asc |
Возвращает ASCII-код символа. |
AscW |
Возвращает юникод-код символа. |
Assign |
Присваивает данные переменной с указанным именем. |
ATan |
Вычисляет арктангенс угла |
AutoItWinGetTitle |
Получает заголовок окна AutoIt. |
AutoItWinSetTitle |
Изменяет заголовок окна AutoIt. |
Binary |
Возвращает бинарное представление выражения. |
BinaryToString |
Преобразовывает бинарные данные в строку. |
BlockInput |
Отключает/включает использование мыши и клавиатуры. |
Ceiling |
Округляет число до ближайшего целого в большую сторону. |
ControlClick |
Эмулирует нажатие мыши на указанный элемент интерфейса. |
ControlGetText |
Возвращает текст из элемента. |
ControlSetText |
Устанавливает текст в элемент. |
Cos |
Вычисляет косинус угла. |
Exp |
Возвращает число e, возведённое в указанную степень. |
FileClose |
Закрывает ранее открытый файл. |
FileCopy |
Копирует один или несколько файлов. |
FileDelete |
Удаляет один или несколько файлов. |
FileExists |
Проверяет, существует указанный файл или каталог. |
FileOpen |
Открывает файл для чтения или записи. |
FileOpenDialog |
Отображает диалог открытия файла. |
FileRead |
Считывает данные из файла, весь или указанное количество символов/байтов. |
FileReadLine |
Считывает строку текста из текстового файла. |
FileWrite |
Записывает данные в конец файла. |
FileWriteLine |
Записывает строку текста в конец файла. |
Floor |
Округляет число до ближайшего целого в меньшую сторону. |
HotKeySet |
Устанавливает горячую клавишу для вызова пользовательской функции. |
Int |
Возвращает числовое (целое) представление выражения. |
Log |
Вычисляет натуральный логарифм числа. |
Mod |
Вычисляет остаток от деления |
MouseClick |
Выполняет клик мышкой. |
MouseClickDrag |
Выполняет клик мышкой и операцию перетаскивания. |
MouseDown |
Выполняет нажатие и удерживание кнопки мыши в текущей позиции. |
MouseGetCursor |
Возвращает ID отображаемого состояния курсора мыши. |
MouseGetPos |
Возвращает текущие координаты курсора мыши. |
MouseMove |
Перемещает указатель мыши. |
MouseUp |
Выполняет отжатие кнопки мыши в текущей позиции. |
MsgBox |
Отображает простое окно сообщения с опциональным временем отображения. |
Number |
Возвращает числовое представление выражения. |
Random |
Генерирует псевдо-случайное число с плавающей точкой. |
Round |
Округляет число до указанного числа знаков после запятой. |
Run |
Выполняет запуск других программ. |
Send |
Эмулирует нажатие клавиш в активном окне. |
SetError |
Устанавливает значение макроса @error. |
Shutdown |
Завершает работу операционной системы Windows. |
Sin |
Вычисляет синус угла |
Sleep |
Приостанавливает выполнение скрипта. |
Sqrt |
Вычисляет квадратный корень выражения. |
String |
Возвращает строковое представление выражения. |
StringInStr |
Проверяет вхождение подстроки в указанную строку. |
StringLeft |
Возвращает указанное число символов строки слева. |
StringLen |
Возвращает количество символов строки. |
StringLower |
Преобразует строку в нижний регистр. |
StringRegExp |
Ищет в строке совпадения с образцом, заданным в виде регулярного выражения. |
StringRegExpReplace |
Заменяет текст строки, используя регулярное выражение. |
StringReplace |
Заменяет фрагмент в строке. |
StringRight |
Возвращает указанное число символов строки справа. |
StringSplit |
Разделяет строку на подстроки, в зависимости от заданного разделителя. |
StringStripWS |
Удаляет пробельные символы в строке. |
StringToBinary |
Преобразует строку в бинарные данные. |
StringTrimLeft |
Удаляет указанное количество символов строки слева |
StringTrimRight |
Удаляет указанное количество символов строки справа. |
StringUpper |
Преобразует строку в верхний регистр. |
Tan |
Вычисляет тангенс угла |
VarGetType |
Определяет тип данных переменной. |
WinActivate |
Активирует указанное окно |
WinActive |
Проверяет, существует и активно ли указанное окно. |
WinClose |
Закрывает указанное окно. |
WinExists |
Проверяет, существует ли указанное окно. |
WinGetClassList |
Возвращает класс окна. |
WinGetProcess |
Получает идентификатор процесса. |
WinKill |
Принудительно закрывает окно. |
Обзор языка - комментарии
Поскольку на строке может располагаться только одно выражение, длинные выражения могут быть разбиты на несколько строк с помощью символа подчёркивания _ с предшествующим пробелом, помещённого в конце строки, которую необходимо разбить. Для разбивания строк необходимо использовать символ объединения -
Точка с запятой «;» - это комментирующий символ.Весь текст, идущий после символа «;» является комментарием и будет проигнорирован интерпретатором/компилятором.
Можно комбинировать _ и «;» чтобы поместить комментарии и продолжить длинное выражение на следующей строке.