Вступление

AutoIt v3 - бесплатный скриптовый язык, созданный для автоматизации графического интерфейса пользователя Windows и создания скриптов общего назначения. Он использует сочетание имитации нажатий клавиш, движений мыши и работу с окнами/управляющими элементами, чтобы автоматизировать задачи в случаях, когда использование других языков невозможно или ненадежно. AutoIt имеет малый размер и не требует наличия каких-либо сторонних библиотек в системе.

AutoIt был первоначально создан для "развёртывания" PC, когда нужно надежно автоматизировать настройку множества PC, независимо от используемого на них программного обеспечения. По прошествии времени AutoIt стал мощным языком, который поддерживает сложные выражения, функции пользователя.

Особенности:

1.     Простой и лёгкий для изучения синтаксис

2.     Симуляция нажатий клавиш и движений мыши

3.     Управление окнами и процессами

4.     Взаимодействие со всеми стандартными управляющими элементами

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

6.     Создание графического интерфейса пользователя (GUI)

7.     Поддержка COM

8.     Регулярные выражения

9.     Прямой вызов функций из внешних DLL и функций Windows API

10.                       Детализированный файл справки и большой форум поддержки


 

Обзор языка - типы данных

В AutoIt есть только один тип данных, называемый Variant (нетипизированный тип данных). Variant может содержать как числа, так и строки, которые интерпретируются по разному в зависимости от ситуации. К примеру, если вы попытаетесь перемножить два Variant, то они будут интерпретированы, как числа, а если вы попытаетесь их объединить (оператор &), то они будут интерпретированы, как строки.

Например:

$a = 10 * 20; $a = 200 - число (* используется для умножения)

$a = 10 & 20; $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.Описание: http://autoit-script.ru/autoit3_docs/images/copysmall.gif

Типы данных в массиве

Как правило массив содержит элементы только одного типа данных. Но поскольку переменная типа 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 доступны следующие условные операторы:

1.     If...Then...Else

2.     Select...Case

3.     Switch...Case

Все три оператора похожи и предназначены для выполнения разного кода в зависимости от данного условия.Описание: http://autoit-script.ru/autoit3_docs/images/copysmall.gif

$var = -20

If $var > 0 Then

MsgBox(0, "Пример", "$var положительное!")

ElseIf $var < 0 Then

MsgBox(0, "Пример", "$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

Switch Int($var)

Case 1 To 10

MsgBox(0, "Пример", "$var больше 1")

Case 11 To 20

MsgBox(0, "Пример", "$var больше 10")

Case Else

MsgBox(0, "Пример", "$var больше 20 или меньше 0 или равно 0")

EndSwitch

Для любого из этих операторов будет выполнена первая группа операторов, следующая после истинного условия. Все остальные условия и операторы будут проигнорированы.




 

Обзор языка - операторы циклов

Цикл - это часть скрипта, которую необходимо выполнить несколько раз. Можно задать как конкретное число повторений, а можно повторять выполнение кода в зависимости от условия, когда число повторений заранее неизвестно.

В AutoIT доступны следующие операторы циклов:

1.       For...Next

2.       While...WEnd

3.       Do...Until

4.       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

Параметры

expression

Выражение, которое при вычислении может принять значение True или False.
Если <expression> равно True - выполнить операторы <statements>
Если <expression> равно False, происходит выход из цикла.

statements

Многострочный блок операторов, который выполняется, если выражение <expression> равно True

 

Do...Until - цикл с постусловием.

Do

<statements>

Until <expression>

Параметры

expression

Выражение, которое при вычислении может принять значение True или False.
Если <expression> равно True - выход из цикла
Если <expression> равно False - выполнить ещё раз операторы <statements>

statements

Многострочный блок операторов, который выполняется, при входе в цикл или если выражение <expression> равно False

 

For...In...Next - перечисляет элементы в коллекции объекта или массива

For <variable> In <expression>

<statements>

Next

Параметры

variable

Переменная, которой будет присваиваться значение элемента

expression

Должно быть выражением, возвращающим объект или массив с как минимум одним элементом.

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

Принудительно закрывает окно.

 


 

Обзор языка - комментарии

Поскольку на строке может располагаться только одно выражение, длинные выражения могут быть разбиты на несколько строк с помощью символа подчёркивания "_" с предшествующим пробелом, помещённого в конце строки, которую необходимо "разбить". Для "разбивания" строк необходимо использовать символ объединения - &

Точка с запятой «;» - это комментирующий символ.  Весь текст, идущий после символа «;» является комментарием и будет проигнорирован интерпретатором/компилятором.

Можно комбинировать "_" и «;» чтобы поместить комментарии и продолжить длинное выражение на следующей строке.