Автоматизация, как много в этом слове. AutoIt.
AutoIT logo
Ну вот и положено начало статьям по автоматизации которые обещал, ну и собственно вторая статья(первая, первая часть вторая). Поразглагольствую об автоматизации работы с Windows приложениями и в частности о AutoIt. Скажу сразу в нем я еще не очень силен, но даже при наличии базовых знаний он может значительно облегчить жизнь.
Где еще почитать по теме?
http://www.autoitscript.com/autoit3/ – официальный сайт AutoIt.
http://www.autoitscript.com/autoit3/docs/functions.htm – официальная же документация по функциям AutoIt.
http://ru.wikipedia.org/wiki/AutoIt – страница об AutoIt в Википедии.
http://forum.ru-board.com/topic.cgi?forum=5&topic=29240 – сообщество на Ru-Board, с большим количеством отличных примеров.
Описание
AutoIt – это скриптовый язык предназначенный для создания макросов к Windows приложениям. И всем бы был этот язык хорошь если бы не был Basic`ом, это его главный и неспоримый недостаток. Не буду спорить сам когда-то писал программки на QBasic, но делалось это для обучения и после себя оставил не очень хорошее впечатление, особенно после знакомства с Pascal и позднее с C. Но, не будем о грустном есть у него и достоинства и они хороши.
Достоинства AutoIt
Первым достоинством можно считать отличный инструментарий для создания скриптов, редактор SciTE с полной поддержкой синтаксиса и библиотек языка, code completion и прочим.
Второе достоинство отличная система справки и просто огромное количество примеров, в которых можно найти почти все.
Третьим и думаю одним из основных является тот факт что можно скомпилировать скрипт в «.exe» файл и затем выполнять на другом компьютере без необходимости установки AutoIt-интерпретатора.
Установка AutoIt
Скачать AutoIT можно отсюда: http://www.autoitscript.com/autoit3/downloads.shtml, лучше всего выбирать полную версию т.к. в ней гарантированно бдет все что вам нужно. Процесс установки прост как все гениальное поэтому описывать его я не буду. По окончании в меню «Пуск»->»Программы» («Start»->»Programs») появится новый раздел AutoIt:

AutoIT section
Первый скрипт
Итак напишем маленький, но гордый скрипт. Для работы нам понадобятся два приложения, «SciTE Script Editor» и «AutoIt Window Info».
Сначала запустите SciTE и вставте туда одну строчку:
Run("notepad") |
И нажмите . У вас должен был запустится Notepad. Теперь запустите «AutoIt Window Info»:

AutoIt window info
Перетяните прицел из «Finder Tool» на окно запущенного блокнота. Если у вас английская Windows вы получите тот же результат что и у меня на скриншоте. Из всей информации нам понадобится поле «Title». Копируем его и добавляем в код еще одну строку:
WinWaitActive("Untitled - Notepad") |
эта функция ожидает пока фокус передастся окну с заголовком «Untitled – Notepad». Теперь давайте наберем пару строк и сохраним файл, полный скрипт:
Run("notepad") WinWaitActive("Untitled - Notepad") ; Few strings Send("String #1{ENTER}String #2{ENTER}String #3") ; Alt+F+S Send("{ALTDOWN}(fs){ALTUP}") ; Filename Send("AUTOMATE_IT.txt{ENTER}") |
Функция Send отсылает нажатия клавишь текущему приложению.
- {ALTDOWN}{ALTUP} – зажать кнопку Alt
- {ENTER} – нажать Enter
Полный список клавишь можно найти здесь: http://www.autoitscript.com/autoit3/docs/functions/Send.htm
Попробуйте удалить первую строку и запустить скрипт, в трее появится иконка AutoIt, это наш скрипт, он ждет пока вы запустите новый блокнот и получите фокус.
Примеры работы с клавиатурой в AutoIt
«{DOWN 6}» – нажать вниз шесть раз
«!{s}» – Alt+s
«!{X}» – аналогично Alt+Shift+x
«^{w}» – Ctrl+w
«^{W}» – аналогично Ctrl+Shift+w
«+{z}» – Shift+z
«+» – установить checkbox в активное состояние
«-» – установить checkbox в неактивное состояние
«{TAB}» – перейти к следующему элементу
«+{TAB}» – перейти к предыдущему элементу
«^{TAB}» – перейти к следующей вкладке
«{CTRLDOW}+{TAB}{CTRLUP}» – перейти к прелылущей вкладке
Работа с файлами в AutoIt
За работу с файлами в AutoIt отвечает библиотека «file.au3″, более подробную можно найти в папке с примерами (examples)
Возможно вам когда-нибудь приходилось добавлять много алиасов для сайта в IIS, «добавлять руками?», настоящий админ на это не пойдет
.
Следующая программа считывает из файла config.ini имена алиасов для сайта и добавляет их в IIS:
#include ;Buffer array for file lines ;SEE config.ini Dim $aRecords ;Read from file 'config.ini' to $aRecord array _FileReadToArray("config.ini",$aRecords) ;Wait 6s WinWaitActive("Advanced Web Site Identification", "Add...") ;For each line of file For $x = 1 to $aRecords[0] DoSome($aRecords[$x]) Next ; Function for create add IIS alias for site Func DoSome($val1) AutoItSetOption("SendKeyDelay", 10) Send('!a{TAB}80{TAB}' & $val1 & '{TAB}{ENTER}'); Sleep(1000); EndFunc |
Запускаем скрипт, открываем свойства сайта и захоим в список алиасов:

Свойства сайта IIS
Как только вы нажмете на кнопку «Advanced», скрипт прочтет содержимое файла config.ini и добавит к сайту указанные там алиасы.
Вот еще один скрипт, но уже на любителя. В компании где я работаю разрабатывается довольно много сайтов с использование CMS DotNetNuke, для этой кэширования сайта используется DNN модуль PageBlaser. Следующий скрипт добавляет нужные для него опции сайта в IIS:
DoSome('.js') DoSome('.css') DoSome('.jpeg') DoSome('.jpg') DoSome('.png') DoSome('.gif') ; Function for add pageblaster ext. ; $val1 == extention (.js) Func DoSome($val1) AutoItSetOption("SendKeyDelay", 10) WinWaitActive("Application Configuration") Send('!{d}C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll{TAB 2}' & $val1 & '{TAB 3}-{TAB}{ENTER}') Sleep(1000) EndFunc |
Предпологается что версия .NET 2.0.20727 и что вы доберетесь до опций сайта:

Компиляция скриптов
Никому не хочется ставить лишний софт на компьютер, а тем более на сервер. Для того чтобы не ставить AutoIt на все копьютеры где он нужен, можно написать скрипт на своем компьютере (или виртуальной/удаленной машине если вы злосный nix`оид
) а затем его откомпилировать. Откомпилировать AutoIt скрипт можно следующими способавми:
1. В SciTE:

2. Через контекстное меню файла

3. Из консоли
C:\Program Files\AutoIt3\Aut2Exe\aut2exe.exe /in "script_name" |
Для самых ленивых, автоматические генераторы скриптов
Для самыл ленивых существует вариант полностью автоматизированной записи скриптов, но к сожалению качество таких генераторов не очень высокое. Но всеже: