AutoIt

Матеріал з Вікіпідручника
Перейти до навігації Перейти до пошуку

AutoIt — це вільна бейсикоподібна скриптова мова, яка спеціалізується на автоматизації Windows GUI. Вона використовується для симуляції тиснення на клавіші, рухів мишею та керування вікнами й контролами в порядку, необхідному для автоматизації задачі. AutoIt також дуже мала за розміром, самодостатня та працює на всіх версях Windows "з коробки" без потреби у рантайм бібліотеках.

Вступ[ред.]

AutoIt була розроблена незалежною від зовнішніх .dll бібліотек чи потреби запитів до реєстру, що робить її безпечною для використання на серверах. Скрипти компілюються у самостійні виконувані файли за допомогою утиліти 'Aut2Exe. Також підтримується COM та DLL версія AutoIt, що зветься AutoItX, яка дозволяє вам додати унікальні можливості до улюбленої мови програмування або скриптування! Найкраще те, що AutoIt залишається вільною - але якщо ви маєте бажання допомогти розробникам словом, ділом або грошима, то поможіть! Можливості:

  • Легкий до вивчення BASIC`oподібний синтакс
  • Симуляція натискання на клавіатурі і рухів мишею
  • Керування windows`ом та процесами
  • Взаємодія зі всіма стандартними контролами windows`a
  • Скрипти можуть бути зкомпільовані у самостійні виконувані файли
  • Є можливість створювати графічний інтерфейс користувача (GUI)
  • Працює з COM+
  • Регулярні вирази (PRCE)
  • Прямий виклик зовнішніх DLL та функцій Windows API
  • Добротний файл допомоги та велика спільнота(у вигляді форуму)
  • Сумісність з Windows 2000 / XP / 2003 / Vista / 2008 / 7
  • Підтримка Unicode та x86-64
  • Працює з UAC

Недоліки:

  • Не підтримується багатопоточність! Навіть якщо ви скористаєтесь стандартною функцією WinAPI, то нічого в вас доброго не вийде, бо вбудований менеджер пам'яті не підтримує багатопоточність.
  • Неможливо скомпілювати DLL.
  • Не існує путнього дебагера, або принаймні в стандартний дистрибутив він не входить.

Висновок: Якщо б в ковбаси були крила, то це була б найкраща птиця! Свою нішу софт знайшов (тестування програм та автоматизація), має велику спільноту, має компілятор, що генерує невеликі виконувані файли, отже його вивчення дасть деякі переваги.

Основи синтаксису[ред.]

Синтаксис мови бейсикоподібний, тому його вивчення нескладне. Коментарі це елемент мови, на який компілятор не звертає увагу, Зазвичай коментарі використовуються як нотатки для людини, що буде переглядати текст програми. Коментарі бувають однорядкові(починаються з ;) та багаторядкові (починаються з #cs або #comments-start, а закінчуються #ce або #comments-end). Приклад:

; Це однорядковий коментар
#cs
Це 
	багаторядковий 
			коментар
#ce
#comments-start
Ще
	один
		багаторядковий
				коментар
#comments-end

Змінна це елемент мови, що зберігає інформацію у вигляді текстових рядків, чисел та ін. Змінні мають ім`я латиницею та/або цифррами, але першим символом буде знак долара($). За його допомогою змінні одрізняються од інших елементів мови. Приклади правильних імен змінних: $Variable, $Apple, $2. Останній випадок теж правильний, але так називати змінні не рекомендується, бо легко заплутатися. Щоб записати у змінну використовується оператор присвоювання, який виглядає як "=" Приклад:

$x = 1 ; У змінну х записали число 1
$y = 2 ; У змінну y записали число 2
$z = 3 ; У змінну y записали число 2
$z = $y ; У змінну z записали значення змінної y, тобто 2
$s = "Привіт, світе!"

Зверніть увагу, що для оператора присвоювання важливе розташування. Тобто, праворуч містьться джерело інформації, а ліворуч змінна, що прймає. Джерелом може виступати, як безпосередньо данні, так і інша змінна. Функція це відокремлений код з метою багаторазового використання. Програміст може як створювати свої функції, так і використовувати вбудовані. Параметри, які передаються функції до обробки, називаються аргументами. Вони містяться в дужках та перераховуються через кому, якщо їх більше ніж одиниця. Або ж дужки пусті, якщо функція не приймає жодних аргументів. Кожна функція може повертати якесь значення або ж не повертати нічого. Розглянемо декілька вбудованих функцій: Функція StringLen("string") . Спочатку йде назва функції, за нею відкриваються округлі дужки. Функція прймає один аргумент - рядок, і повертає кількість символів в ньому. Тобто StringLen("А") поверне 1, а StringLen ("Привіт, світе") поверне 13. Оскільки функція повертає інформацію, то ми можемо записати цей результат у змінну, щоб наступрого разу скористатися нею. Приклад:

$Len = StringLen("Привіт, світе"); До змінної Len записати результат обчислення з функції 
;StringLen, аргументом якої є текстовий рядок "Привіт, світе", а результат 
;дорівнюватиме 13. Тобто до змінної Len після обчислення функцією аргумента,
; запишеться 13.

Тепер розглянемо функцію MsgBox ( flag, "title", "text" [, timeout [, hwnd]] )(так вона записана в офіційній документації) перший аргумент flag зараз нам не цікавий, запишемо туди 0, другий аргумент передає заголовок вікна, а третій зміст повідомлення. Аргументи в квадратних дужках не обов'язкові і зараз нам не потрібні. Приклад:

MsgBox(0, "Заголовок", "Привіт, світе!")

Цей код створює діалогове вікно, як на малюнку 1. Тепер перейдемо до математичних операторів.

Позначення Пояснення Приклад Результат прикладу
+ додавання двох чисел 10 + 20 30
- різниця двох чисел 20 - 10 10
* множення двох чисел 20 * 10 200
/ ділення двох чисел 20 / 10 2
& з`єднання двох рядків "one" & 10 "one10"

Розглянемо наступний приклад:

$x="Привіт, "
$y="Світе"
$z="Василь"
MsgBox(0, "Повідомлення", $x&$y&"!") ;Привіт, Світе!
MsgBox(0, "Повідомлення", $x&$z&"!") ;Привіт, Василь!

В наведеному прикладі ми використали оператор зєднання рядків.

$Msg="Привіт, Світе!"
$Len=StringLen($Msg)
MsgBox(0, "Повідомлення", "Повідомлення '"&$Msg&"' містить "&$Len&" знакомісць")
Beep();Побібікати про кінець програми :-)

Одірвемось трохи од складного і важкого програмування :) і розглянемо скриптові можливості мови.

Opt("SendKeyDelay", 100)
Run(@WindowsDir & "\notepad.exe")
Sleep(500)
Send("IN SOVIET RUSSIA TV WATCH YOU{!}{ENTER}")

Що нового ми побачили? @WindowsDir це вбудований макрос, а простіше підстановка. Тобто коли компілятор читає @WindowsDir, то він автоматично замість нього підставляє шлях до каталога віндоза на вашому компютері. Таким чином наша програма буде правильно працювати на будь-якому компютері. Функція Run() приймає першим аргументом шлях до виконуваного файла. Після запуску програма переходе до функції Sleep(), яка призупиняє скрипт на кількість мілісекунд, що передаються у єдиному аргументі. Це необхідно нам для того, щоб блокнот міг за цей час створити вікно і зробити його активним. Наступна Функція Send() симулює натиснення клавіш у активному вікні (яким зараз є блокнот). І останя незрозуміла функція Opt("SendKeyDelay", 100) змінює затримки між натисканням клавіш до 100 мілісекунд. Розглянемо ще одну функцію ""