Что нового

Общая информация о скриптовом языке AutoIt

Статус
Закрыто для дальнейших ответов.

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
[box title=Wikipedia link=http://ru.wikipedia.org/wiki/AutoIt]AutoIt — свободно распространяемый язык для автоматизации выполнения задач в Microsoft Windows. В ранних версиях программа преимущественно использовалась для создания скриптов автоматизации (иногда называемых макросами) для программ Microsoft Windows. Такие скрипты полезны для выполнения часто повторяющихся задач, таких как инсталляция идентичных наборов программ на большое количество компьютеров. В более поздних версиях AutoIt улучшился дизайн языка и возросла общая функциональность, что приблизило AutoIt к языкам общего назначения.

С выходом AutoIt 3 синтаксис языка был реструктурирован и приблизился к семейству BASIC. Скрипт может быть скомпилирован в независимый от установленного в системе интерпретатора исполняемый файл.

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

Возможности языка включают:
  • Совместимость с Windows 2000 / XP / 2003 / Vista / 2008 / Windows 7 / 2008 R2
  • Версия для 64-битных систем.
  • Поддержка User Account Control (UAC) в Windows Vista.
  • Поддержка юникода, начиная с версии 3.2.4.0.
  • Запуск консольных приложений и доступ к стандартным потокам ввода/вывода.
  • Запуск программ от имени другого пользователя (функции RunAs).
  • Компиляция скрипта в EXE файл с помощью Aut2Exe.
  • Включение файлов в скомпилированный файл, которые можно извлекать при запуске.
  • Сжатие и защита исполняемого файла от декомпиляции с помощью упаковщика UPX
  • Создание графических интерфейсов GUI, информационных сообщений, форм ввода информации.
  • Вызов функций из 32-битных динамических библиотек и функций Windows API.
  • Работа с реестром Windows, буфером обмена, файлами (чтение, изменение, копирование, удаление).
  • Работа с объектами COM (component object modelling).
  • Перехват и эмуляция клавиатурных нажатий и кликов мышки.
  • Работа с окнами (особенно стандартными): передвижение, скрытие, отображение, изменение размера, активизация, закрытие и т.д. К окнам можно обращаться по их заголовку, отображаемому тексту, размеру, расположению, классу, по внутренним дескриторам (handle) Win32 API, определяемым с помощью входящей в комплект поставки утилиты AU3Info.
  • Получение информации и взаимодействие с элементами управления (особенно стандартными): поле редактирования, переключатель, список, кнопки, статусная строка и т.д., в т.ч. неактивными.
  • Интернет: чтение HTML кода страниц и скачивание файлов, работа с FTP, отправка E-mail сообщений, работа с базами данных MySQL и SQLite.
  • Работа с протоколами TCP и UDP.
  • Автоматизация работы в браузерах: Internet Explorer, Opera, FireFox.
  • Обычные элементы высокоуровневого языка, такие как работа с циклами.
  • Огромное количество функций для работы с текстом (строками), в т.ч. с регулярными выражениями в стиле Perl (используется библиотека PCRE).
  • Работа со звуком.
  • Выполнение сложных математических расчётов.
  • Простой синтаксис, похожий на BASIC.
  • AutoItX — объединённая версия в виде COM и DLL, позволяющая использовать возможности AutoIt в программах, написанных на других языках.

AutoIt распространяется с IDE, основанном на бесплатном редакторе SciTE. Компилятор, вспомогательные утилиты и справочные материалы полностью интегрированы, что делает редактор стандартным окружением для разработчиков, использующих AutoIt. Компилятор AutoIt и среда разработки SciTE легко устанавливаются, дополнительных настроек не требуется. Есть полная документация по языку AutoIt на русском языке.

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

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

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

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

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

Текущая версия языка доступна для скачивания на официальном сайте проекта, также как и предыдущие релизы.[/box]



Из русской справки по AutoIt:
Описание:

[box]AutoIt v3 - это язык для написания сценариев, напоминающий BASIC и предназначенный для автоматизации Windows GUI (графического интерфейса пользователя MS Windows). Его возможности - это методы симуляций нажатий комбинаций клавиш клавиатуры и мыши, функции управления окнами и его визуальными элементами. Решение, явно предлагаемое средствами AutoIt v3, его сценарием, обычно невозможно достичь коротким и понятным кодом какого-либо языка.

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

AutoIt умеет:

Запускать на выполнение Windows и DOS программы
Симулировать нажатия комбинаций клавиатуры (поддерживается основная масса раскладок клавиатуры)
Симулировать перемещения указателя мыши и нажатия на ее кнопки
Перемещать, менять размер и управлять параметрами отображения окон
Непосредственно взаимодействовать с "управляющими элементами" (controls) окна (получать/менять надпись, перемещать, отключать, и т.п. действия)
Работать с буфером обмена для пересылки его текстового содержания
Читать, менять и создавать ключи и значения реестра
Новая версия AutoIt3 распознает общепринятые конструкции и имеет стандартный синтаксис, в духе VBScript и BASIC, и поддерживает обработку выражений, функций, циклов и логических условий, то есть имеет все, что ожидают от программного языка мастера/ветераны кода.

Как и в прежних версиях AutoIt сохраняет небольшой "вес" интерпретатора (~115KB), который является самостоятельным и использует только системные .dll библиотеки. Он намеренно не делает самостоятельных или скрытых записей в реестре, кроме обязательных, составляющих процесс своей установки. Сценарии могут компилироваться в независимые выполняемые файлы с помощью поставляемого компилятора сценариев - Aut2Exe.

Вместе с интерпретатором модернизируются ActiveX и DLL версия AutoIt, которые называются AutoItX3. Эта библиотека представляет собой объединенный конгломерат (COM и стандартная DLL библиотека в одном модуле). AutoItX3 позволит добавить уникальные возможности AutoIt в любые приложения, написанные на других языках программирования! Примеры использования AutoItX3 поставляются вместе с интерпретатором.

К всеобщему удовольствию AutoIt остался БЕСПЛАТНЫМ, хотя если Вы имеете возможность поддержать проект AutoIt ценой собственного времени, деньгами или иными усилиями, то все виды пожертвований принимаются на его домашней странице.[/box]

Как возник AutoIt и кто его разрабатывает:
[box]Jon
Октябрь 1998
Я работал над проектом создания автоматической установки Windows NT 4 для одной фирмы в UK. На каком-то этапе стало ясно, что где-то около половины из устанавливаемых приложений не имеют средств для автоматической установки. Поиск средств, позволяющих автоматизировать нажатия кнопок, привел меня к Microsoft ScriptIt, который был, собственно, скомпилированным сценарием WinBatch, позволяющим выполнять нажатия кнопок в пакетах для атоматической установки.
ScriptIt работал хорошо, хотя и был экстремально ненадежным. Он не позволял адаптироваться к быстродействию ПК, на котором работал, и не имел способа управлять паузами между автоматическими нажатиями клавиш клавиатуры. Другой особенностью, вызывающей проблемы, было отсутствие способов указания текущего директория запускаемых программ, что влекло за собой массу ошибок во многих приложениях, с которыми я работал. Кроме вышеупомянутого, некоторые из функций не работали на NT 5 beta (то есть Windows 2000).
Рождество 1998
Для избавления от мучений на Рождество я решил написать программу на C, которая бы высылала клавиатурные нажатия, надеясь, что я смогу управлять задержками между их сериями.
Январь 1999
AutoIt версии 1 был выпущен на старом сайте winfiles.com. Синтаксис был похож на ScriptIt (для Send) и имел также команды Send, Run, RunWait, WinWait, WinWaitClose, WinWaitActive, WinHide, WinActivate, WinClose, WinRestore, Sleep и SetKeyDelay. Из справки для v1.0:
Преимущества
- Небольшой размер около 40Kb (на 600Kb меньше, чем ScriptIt).
- Модернизируется при возникновении проблем.
- Функция "Reveal" значительно лучше.
- Выполняется ожидание как активных, так и неактивных окон.
- Возможны переменные паузы (заданные в миллисекундах).
- Время между комбинациями клавиш можно менять.
- При запуске приложений можно указать их рабочую папку.
- Активизация окон для Win98/NT 5.0 (Использование "WinActivate")
Недостатки
- Не реализован раздел "[ADLIB]"
- Требуется точное форматирование сценария (без пробелов в строках с командами).
- Отсутствуют Wilson WinBatch команды.
(Кто их использует?)
- Из-за названий используемых команд сценарии слегка растут по размеру.
Январь - Апрель 1999
Новые версии вплоть до v1.8 с опциями типа:
- Крутой режим /reveal
- Goto!
- IfWin...
- Управление мышью
- Поддержка ADLIB раздела в духе ScriptIt
- Gosub
- Поддержка переменных %ENV%
Август 1999
Выпуск AutoIt v2.
Первая версия AutoItX.
Сентябрь 1999
AutoIt v2.1 - первая версия Aut2Exe.
Сентябрь 1999 - Май 2001
Новые версии и функции увеличивали возможности. Как правило, если кто просил, то я вставлял новые функции. То, почему сейчас это не так, вызвано памятью о муках такой работы.
Май 2001
Полное переписывание кода AutoIt на C++.
Январь 2002
AutoIt v2.62 - первая версия [Декомпилятор исходного кода] (boo...hiss)
Первая версия AutoItDLL.
Декабрь 2002
AutoIt v2.64 - последняя версия AutoIt v2.
После реализации собственного способа сжатия и библиотеки архивирования добавлена функция FileInstall.
Январь 2003
Очень медленное развитие с 2001 до 2003. Достигнута та точка, когда я потерял волю для работы над ним. Исходный код снова стал мучением, поскольку хочется добавить каждую из предлагаемых кем-либо функций, причем предлагающий не думает о будущем. Синтаксис AutoIt v2 стал сущим адом.
Половина запросов касались того, как выполняются циклы и выражения, а остальная половина - "Как мне использовать обратный слеш в команде Run". Аааа!
В это время уже имелись некоторые "добавления (add-ons)" типа Aut2xtra, созданного Larry, которые позволяли применять некоторые из отсутствующих в AutoIt функций, поскольку у меня не было времени и настроения их добавлять.
IIRC Larry был расстроен отсутствием развития проекта и предложил написать новую версию. Я решил, что если и писать новую версию, то это должно быть похоже на "нормальный" язык. С этого началось развитие среды для AutoIt v3.
Предыдущие версии требовали слишком строгого сооблюдения синтаксиса, то есть "Command, param1, param2,..." и требовался месяц понять то, что могло содержаться в строке сложного выражения. Отсюда и гигантский объем запросов. Хотя я и приобрел мастерство написания кода выражения в AutoIt, но оно было второй по тяжести овладения вещью, которую я когда-либо делал. (Первая по трудности вещь - это тот код сжатия, который применяется в Aut2Exe, и который мне пришлось писать с нуля).
Основная масса членов команды начала помогать разработке именно с этого момента. Я позабыл даже то, как и когда точно это случилось с каждым, поэтому надеюсь, что они помогут мне вспомнить это.
Март 2003
Выпуск первой бета-версии AutoIt v3.
Февраль 2004
После более чем 100 бета-версий разработки и теста выпущен AutoIt v3.0.100.

Larry
В начале 2001 начались мои собственные автоматические установки системы WinNT. Я обнаружил, что прежний куратор для проведения таких работ пользовался сценарием AutoIt. Очень хорошо... я разобрался в управлении процесса установки, которым обладал AutoIt, перепробовал все другие имевшиеся программы и остановился на "Всецело-AutoIt" решении.
Тогда мы все торчали в Yahoo AutoItList группе. На работе было времени навалом (спасибо AutoIt) и можно было отстояться на AutoItList. Jon заметил мою просвещенность, и потому позволил (позволяет и теперь) мне модерить/тянуть эту группу. Хотя уже давно я (несколько лет) не вникаю в раздел файлов на ней.
К 2003, я уткнулся в стену с тогдашним AutoIt, и потому начал учить C для того, чтобы писать утилиты командной строки (используя GUI, AutGUI.exe) для работы вместе с AutoIt. После этого я начал всем грозить, что уже пробую писать "следующее поколение" AutoIt. Проведя за этим целых два дня, чтобы написать разборщик сценария, и я думаю, Jon совсем напрягся от того, какими крутыми могли быть мои выдачи, и каким непростым мог бы стать мой продукт в полном объеме. Так вот, он спас меня и понял, что тут от него нужны его собственные мучения.
Я думаю, Jon и я имеют те же установки, так вот он и дал мне быть модератором форума AutoItScript. В дальнейшем, полностью понимая мою лень и охраняя от нее других, он все же стал давать порционно нести некую ответственность там.
Первым и главным из моих растройств с этой компанией AutoIt, а также вообще с бесплатным ПО, я понял, это то, что все мои муки и часы никогда достойно не окупаются. Мне остается только жрать гордость от этих усилий.

JdeB
Я использую AutoIt с версии 2...
Начал быть более активным на старом форуме перед переходом на новый.
Начал предлагать помощь в таких вещах как:
- автоматизация создания справки.
- сделать возможным открытие справочника AutoIt3 для функций и ключевых слов (F1) из редакторов типа Crimsom/TextPad/SciTE.
Написал много UDF's.
Написал Tidy в синтаксисе Autoit3 для изучения AU3. Это теперь BCX - C, потому что хочется чтобы было быстрее.
Написал Obfuscator, он основан на исходнике Tidy для преобразования сценария в нечитаемый вид. Начал разработку AutoIt3 Lexer для SciTE и представил это для SciTE v 1.60.
Начал пакет установки SciTE4AutoIt3 для того, чтобы сделать один установщик для всего, сделанного другими и мною и сделал для этого Helpfile.
Написал AutoIt3Wrapper для упрощения доступа к основной и бета версии AutoiT3 сделал Compiler Directives для Updating сведений о ресурсах выдаваемых программ.
Начал SciTE4AutoIt3 Sub-Website, когда SciTE стал популярным.
Стал модератором на случай (мягко говоря) атак на форум, поскольку Jon занят, а Larry живет далеко.
Написал Obfuscator, основанный на Tidy для преобразования сценария в нечитаемый вид.

Valik
Много времени назад я нашел бот Diablo II. По каким-то причинам (наверно для правки чего-то), я его изучил, а написан он на AutoIt, так что я пришел на сайт, чтобы получить программу. Где-то как раз в то время, как Jon начал работать над v3, я начал учить C++. После v3 бета я начал переводить кое-какие мои старые сценарии на v3. В конце концов, я или нашел проблемы, или захотел опций, а поскольку исходник AutoIt в это время уже обнаружился, а я учил C++, то стало неплохо чего-то пописывать. И хоть я и стал модератором, как JdeB, но очень быстро устал и утомился от тупости форума.

Jpm
Не могу вспомнить тот момент, когда обнаружил AutoIt, но он был тогда простым и вдобавок мощным языком. Я использовал его много для автоматизации процесса переустановки при бета тестировании Windows, то есть я имел возможность восстановить всякий раз ту же самую среду (системную и пользовательскую). Но при этом мог сделать все несколько иначе. Процесс был очень медленным на ПК с 200Mhz...
Начиная с Марта 2003 я решил помочь справкой французам и перевел документацию по версии V2. В это время код Autoit V3 был доступен, поэтому я решил побольше поучить C и Windows API. Я написал конвертор с V2 на V3 - он сейчас бесполезен, но, по крайней мере, мой C-код улучшился.
Принимал участие в улучшении и помощи автоматизации на разных версиях windows и разных языках. Написал тест AutoIt, помогающий передавать в дистрибутив полноценный код бета версий. Я был горд от создания GUI, который в то время, как Larry начал свой AU3GUI проект, я решил интегрировать его в версию V3.0.
Когда Jon занят и вне AutoIt, я смотрю сообщения об ошибках и другие разделы. Пытаюсь управлять BUG форумом, как могу, а также находить/интегрировать те улучшения, которые мне нравятся и могу реализовать...[/box]
 
Статус
Закрыто для дальнейших ответов.
Верх