Posts tagged ‘autoit’

Автоматизация, как много в этом слове. AutoIt.

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:

Screenshot

AutoIT section

Первый скрипт

Итак напишем маленький, но гордый скрипт. Для работы нам понадобятся два приложения, «SciTE Script Editor» и «AutoIt Window Info».
Сначала запустите SciTE и вставте туда одну строчку:

Run("notepad")

И нажмите . У вас должен был запустится Notepad. Теперь запустите «AutoIt Window Info»:

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

Свойства сайта 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 и что вы доберетесь до опций сайта:

IIS pageblaster DNN

Компиляция скриптов

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

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

AutoIt compile from context menu

3. Из консоли

C:\Program Files\AutoIt3\Aut2Exe\aut2exe.exe /in "script_name"

Для самых ленивых, автоматические генераторы скриптов

Для самыл ленивых существует вариант полностью автоматизированной записи скриптов, но к сожалению качество таких генераторов не очень высокое. Но всеже:

  • AutoItMacroGenerator – Записывает в реальном времени действия пользователя в AutoIt код.
  • ScriptWriter – Аналог AutoItMacroGenerator.