AutoIt

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
AutoIt
Изображение логотипа
Класс языка программное обеспечение и сценарный язык
Тип исполнения интерпретируемый, компилируемый
Появился в Январь 1999
Автор Джонатан Беннет и AutoIt Team
Расширение файлов .au3 или .a3x
Выпуск 3.3.16.1 (19 сентября, 2022)
Испытал влияние BASIC
Повлиял на AutoHotkey
Лицензия бесплатное программное обеспечение[1]
Сайт autoitscript.com
Платформа Windows
ОС Windows
Логотип Викисклада Медиафайлы на Викискладе

AutoIt — свободно распространяемый язык для автоматизации выполнения задач в Microsoft Windows. Позволяет создавать скрипты автоматизации (иногда называемые макросами), способные имитировать действия пользователя, такие как текстовый ввод и воздействия на элементы управления системы и программ, а также реагировать на события (например, выполнять определённые действия при открытии окна с определённым заголовком). Такие скрипты полезны для выполнения часто повторяющихся задач, таких как инсталляция идентичных наборов программ на большое количество компьютеров.

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

Сам язык AutoIt близок к современным версиям BASICа: это императивный язык с небольшим набором типичных синтаксических конструкций и простой структурой. Поддерживается два вида переменных: простые (скалярные) переменные и массивы. Простые переменные имеют вариантный тип, то есть могут содержать значения любого поддерживаемого типа. Массивы в AutoIt динамические и гетерогенные (могут менять размер и содержать в ячейках значения любых типов), поддерживаются многомерные (до 64 индексов) массивы. Набор типов данных ограничен: это строки, числа, бинарные данные и логические (булевы) значения.

Доступные синтаксические конструкции включают три варианта условного оператора, циклы и объявление пользовательской функции (вложенность функций не поддерживается). Модульности как таковой в языке нет, её заменяет возможность прямого текстуального включения одних файлов в другие с помощью Си-подобной инструкции #include.

Системная библиотека включает широкий набор функций самого различного назначения, в том числе для работы со строками, вычислений, доступа к файлам, сетевого взаимодействия, работы с векторной и растровой графикой и данными в различных мультимедиа-форматах. В состав библиотеки входит простой GUI-фреймворк, позволяющий легко создавать и использовать типовые Windows-формы со стандартным набором элементов управления. Последняя особенность позволяет использовать AutoIt просто как язык для создания несложных программ для Windows со стандартным графическим интерфейсом. Но наиболее важно особенностью AutoIt является поддержка целого ряда специфических функций, дающих доступ к системе Windows, её настройкам и графическому интерфейсу пользователя, что позволяет выполнять симуляцию нажатия клавиш, движений мыши и манипуляции с окнами, элементами управления, отслеживать системные события и реагировать на них. Это позволяет автоматизировать задачи пользователя Windows таким образом, какой невозможен или затруднён в других языках программирования. В частности, поддерживаются следующие возможности:

  • Юникод (начиная с версии 3.2.4.0).
  • Регулярные выражения в стиле Perl (используется библиотека PCRE).
  • Запуск консольных приложений и доступ к стандартным потокам ввода-вывода.
  • Запуск программ от имени другого пользователя (функция RunAs).
  • Сжатие и защита исполняемого файла от декомпиляции с помощью упаковщика UPX
  • Создание графических интерфейсов GUI, информационных сообщений, форм ввода информации.
  • Вызов функций из динамических библиотек и функций Windows API.
  • Работа с реестром Windows, буфером обмена, файлами (чтение, изменение, копирование, удаление).
  • Работа с объектами COM (Соmponent object modelling).
  • Перехват и эмуляция клавиатурных нажатий и кликов мышки.
  • Работа с окнами (особенно легко работать с графическими элементами из Windows): передвижение, скрытие, отображение, изменение размера, активизация, закрытие. К окнам можно обращаться по их заголовку, отображаемому тексту, размеру, расположению, классу, по внутренним дескрипторам (handle) Win32 API, определяемым с помощью входящей в комплект поставки утилиты Au3Info.
  • Получение информации и взаимодействие с элементами управления (особенно стандартными): поле редактирования, переключатель, список, кнопки, статусная строка и т. д., в том числе неактивными.
  • Чтение HTML-страниц, скачивание файлов, работа с FTP, отправка E-mail сообщений, работа с базами данных MySQL и SQLite.
  • Работа с протоколами TCP и UDP.
  • Автоматизация работы в браузерах: Internet Explorer, Opera, Firefox, Google Chrome.
  • Работа со звуком и музыкой.
  • Воспроизведение видео в формате AVI.
  • Работа с векторной графикой и с популярными форматами изображений.
  • Поддержка User Account Control (UAC) в Windows Vista и выше.

О программе

[править | править код]

Комплект AutoIt включает 32- и 64-разрядную версии интерпретатора и совместим со всеми версиями Windows, начиная с Windows XP, как 32-, так и 64-разрядными (версии до 3.3.8.1 включительно совместимы с Windows 2000, а версии до 3.2.12.1 включительно — также с Windows 9x и Windows NT 4.0). Интерпретатор AutoIt имеет небольшой размер и не требует обязательной установки. Для работы достаточно основного файла, а для создания скрипта — любого текстового редактора. Также имеется компонент AutoItX — объединённая версия в виде COM и DLL, позволяющая интегрировать интерпретатор AutoIt в программы, написанные на других языках. Ещё одним важным компонентом системы является отдельная утилита, позволяющая в интерактивном режиме выбирать визуальные элементы интерфейса (окна, отдельные элементы управления) и получать информацию о них, в частности, идентификаторы окон и элементов управления. Данная информация необходима для создания скриптов, имитирующих работу пользователя с графическим интерфейсом системы и программ.

В полной версии (AutoIt Full Installation) AutoIt распространяется с интегрированной средой разработки, основанной на бесплатном редакторе SciTE. Также на официальном сайте можно загрузить расширеную сборку редактора с дополнительными возможностями[2]. Компилятор, вспомогательные утилиты и справочные материалы полностью интегрированы, что делает редактор стандартным окружением для разработчиков, использующих AutoIt. Компилятор AutoIt и среда разработки SciTE легко устанавливаются и дополнительных настроек не требуют (для корректной поддержки русского языка в редакторе потребуется раскомментировать одну строку в файле конфигурации). Есть полная документация по AutoIt и SciTE на русском языке[3][4], и возможность установки полной версии редактора.

Интерпретатор компактен, работает на всех версиях Windows «из коробки», без внешних .dll-библиотек и записей в реестре, что позволяет безопасно использовать его на серверах. Также поддерживается компиляция скрипта в самодостаточный исполняемый файл, который может запускаться самостоятельно без интерпретатора или каких-либо обязательных библиотек, при этом возможно включение в объектный файл дополнительных файлов, которые будут извлекаться при запуске.

Для упрощения разработки графических интерфейсов существует визуальный редактор форм Koda FormDesigner Архивная копия от 27 мая 2009 на Wayback Machine, имеющий интерфейс, аналогичный Delphi IDE. Поддерживается визуальное создание и изменение всех доступных в AutoIt диалоговых элементов (кнопок, полей ввода, меню и т. д.)

Применение

[править | править код]

Популярное использование AutoIt — разработка утилит для Microsoft Windows. Такие распространённые задачи, как мониторинг веб-сайтов, мониторинг сетей, дефрагментация дисков и резервное копирование могут быть автоматизированы и скомбинированы в виде настроенной под пользователя утилиты.

Нередко AutoIt используется для создания ботов к онлайн-играм. Боты позволяют автоматизировать некоторые действия в играх, в результате пользователь может быстрее добиться нужного результата. Такое использование Autoit не одобряется сообществом, поскольку создаёт плохую репутацию программе, однако несколько подобных скриптов могут быть найдены на официальном форуме. Использование ботов рассматривается большинством пользователей AutoIt как нечестная игра, и вам не следует ожидать значительной помощи от сообщества в их создании. Многие члены сообщества вообще не рассматривают такие запросы.

Простота синтаксиса и широкие возможности делают язык популярным среди вирусописателей. На AutoIt написано огромное количество вредоносных программ, что бросает тень на его моральный облик. Некоторые антивирусные программы детектируют любой скомпилированный в AutoIt скрипт, как malware. Учитывая относительно большой риск, в целях безопасности крайне не рекомендуется исполнять на своем компьютере скрипты, полученные из недостоверных источников.

[5]

Версии, поддержка, лицензирование

[править | править код]

AutoIt является свободно распространяемым, но не свободным в смысле лицензирования ПО. Исходный код AutoIt 3.1.0 на языке C++ доступен для загрузки в архиве AutoIt Архивная копия от 3 июля 2007 на Wayback Machine; код дальнейших версий закрыт. Современные версии AutoIt распространяются под лицензией EULA, чем, в частности, объясняется прекращение поддержки декомпиляции скриптов (так как она прямо запрещена данной лицензией)[6].

Исходный код AutoIt использовался для создания языка AutoHotkey. Он был разработан небольшой командой, но с активной поддержкой пользователей со всего мира. Сторонняя поддержка включает, в частности, файлы справки, примеры программ, форумы техподдержки, список рассылки, утилиты.

Текущая версия языка доступна для скачивания Архивная копия от 1 июля 2007 на Wayback Machine на официальном сайте проекта, также как и предыдущие релизы. Доступна Wiki-система, на сайте проекта приведена достаточно подробная документация по системе на многих языках, поддерживается форум с активным сообществом пользователей.

Программа «Привет, мир»:

  ;Выводит стандартное окно с названием «Пример», надписью «Привет, мир!» и кнопкой «ОК».
  MsgBox(0,"Пример","Привет, мир!");

Создание диалогового окна:

  ;Выводит диалоговое окно с кнопками «ОК» и «Отмена». В случае нажатия «ОК» — выход из программы.
  ;Табуляция в примере — для удобства чтения.
  $WantExit=MsgBox(1,"Вопрос","Хотите выйти из программы?") 
    If $WantExit == 1 Then
       Exit
    EndIf

Автоматический запуск программы Блокнот:

  ;Запускает Блокнот, пишет в его окне текст, закрывает программу, отменив сохранение.
  Run("notepad.exe")
  WinWaitActive("Безымянный - Блокнот")
  Send("Вот какой-то текст.")
  WinClose("Безымянный - Блокнот")
  WinWaitActive("Блокнот")
  Send("!Н")

Создание простых часов

  #include <GUIConstantsEx.au3> ; Включение указанного файла внутрь текущего сценария. 
  ;- Окно ------------------------------
  GUICreate("Часы", 155, 111, 192, 114)
  GUISetState()
  ;-------------------------------------
  ;- Часы -------------------------------------------------------------
  AdlibRegister("MainScript", 400) ; Обновление часов
  $Clock = GUICtrlCreateLabel(@HOUR & ":" & @MIN & ":" & @SEC, 50, 20)
  ;--------------------------------------------------------------------
  ;- Настройки ---------------------
  While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
          Case $GUI_EVENT_CLOSE
              Exit
      EndSwitch
  WEnd
  ;---------------------------------
  ;- Сверка часов с компьютером -----------------------------
  Func MainScript()
      GUICtrlSetData($Clock, @HOUR & ":" & @MIN & ":" & @SEC)
   EndFunc
  ;------------------------------------------------------------

Создание окна в центре дисплея.

#include <GuiConstants.au3>

#cs
vCenterDialog
#ce

$Width = "500"
$Height = "500"
$cWidth = @DesktopWidth / 2 - $Width / 2
$cHeight = @DesktopHeight / 2 - $Height / 2

$Form = GUICreate("Dialog", $Width, $Height, $cWidth, $cHeight)

Сообщество AutoIt

[править | править код]

Официальный англоязычный форум находится по адресу http://www.autoitscript.com/forum/ Архивная копия от 11 июля 2007 на Wayback Machine. Там пользователи могут делиться своими скриптами и функциями, получать техподдержку, сообщать об ошибках, вносить идеи и предложения, общаться с разработчиками.

Также есть сайт русскоязычного сообщества Архивная копия от 16 мая 2014 на Wayback Machine

Примечания

[править | править код]
  1. http://www.autoitscript.com/autoit3/docs/license.htm
  2. "AutoIt Script Editor - AutoIt". AutoIt (англ.). Архивировано 19 марта 2018. Дата обращения: 18 марта 2018.
  3. AutoIt Documentation Localization Архивная копия от 23 февраля 2011 на Wayback Machine (англ.)
  4. Русскоязычный форум SciTE на Ru-board. Дата обращения: 13 марта 2022. Архивировано 26 августа 2020 года.
  5. AutoIt and Malware - AutoIt Wiki. www.autoitscript.com. Дата обращения: 3 июня 2022. Архивировано 19 июня 2022 года.
  6. Decompiling_FAQ. Дата обращения: 1 марта 2019. Архивировано 1 марта 2019 года.