Коротке навчання та огляд -Autohotkey
Цей короткий вступ допоможе вам почати створювати власні макроси і комбінації гарячих клавіш.
Туторіал містить
Створення скрипту
Кожен скрипт є текстовим файлом, що містить команди, які потім виконуватиме наша програма - AutoHotkey.exe. Крім власне команд, у скрипті прописуються поєднання клавіш (т.зв. "гарячі клавіші"), які і будуть запускати ці команди. Команди, прописані в скриптах, виконуються у напрямку зверху вниз - починаючи від верхнього рядка і далі вниз.
Створення нового скрипту:
Створіть у Блокноті або будь-якому іншому текстовому редакторі текстовий файл такого змісту:
За змістом: знак # означає клавішу "Windows", а поєднання #z означає, що після натискання клавіші "Windows", не відпускаючи її, ми натискаємо ще клавішу z - (це і є поєднання "гарячих клавіш") і воно у нас запускає інтернет-браузер, відкриваючи там адресу www.google.com.
Отже, зберігаємо та закриваємо файл. Далі змінюємо його розширення з .txt на .ahk. Назва файлу може бути будь-яка, наприклад Test.ahk. Далі запускаємо наш Test.ahk простим подвійним натисканням на ньому. Якщо все зроблено правильно, то в системному треї (там, де годинник) з'являється нова іконка. Перевіряємо наш скрипт. Натискаємо кнопку Windows і потім Z. Веб-сторінка Гугля відкривається у браузері. Якщо вам потрібно відключити скрипт або відредагувати його - клацніть на ньому "правим" кліком і виберіть з меню потрібну вам дію.
Примітка: програма дозволяє використовувати кілька скриптів одночасно. При цьому кожен із них відображатиметься зі своєю власною іконкою у треї.Щоб виставити свою власну іконку на заміну дефолтної, додайте в скрипт наступний рядок:
Адресу до іконки прописуємо свою.
Запуск програми або документа
Для запуску програми, файлу, документа, ярлика використовується команда "Run", наприклад:
F1::Run, Notepad F2::Run, C:\My Documents\Address List.doc F3::Run, C:\My Documents\My Shortcut.lnk F4::Run, www.yahoo.com F5::Run , mailto:[email protected]
Тут ми "повісили" всі ці команди на кнопки F1-F5. Також можна використовувати сполучення клавіш, наприклад у прикладі нижче, комбінація клавіш Win+N буде запускати Блокнот, а Control+Alt+C - калькулятор:
Обидва приклади, описані вище, однострокові, т.к. містять лише одну команду. Для того ж, щоб запустити натисканням клавіш кілька команд, пишемо на першому рядку наші командні клавіші, далі нижче самі команди, а останнім рядком пишемо Return. Наприклад:
Якщо програма або документ не є інтегрованими в Windows, нам буде необхідно вказувати повний шлях до файлу, який ми збираємося запустити, наприклад:
У наведеному вище прикладі папка %ProgramFiles% є системною, тому конретний шлях до неї можна не прописувати. Такий варіант скрипта, порівняно з варіантом запису C: Program Files, є більш універсальним, т.к. на іншому комп'ютері ProgramFiles може знаходитися, наприклад, на диску D:\.
Якщо вам потрібно, щоб скрипт зачекав, поки закриється будь-яка програма чи файл, і лише потім продовжив свою роботу далі, використовуйте замість Run команду RunWait. У наступному прикладі команда MsgBox не запускається доти, доки не закриється Блокнот:
Додаткову інформацію про запуск програм – передача параметрів, завдання робочої директорії, визначення коду повернення програми – див.
Емуляція натискань клавіш та кліків мишею
Натискання клавіш зазвичай посилаються в активне на даний момент вікно і для цього програмою використовується команда Send. У прикладі нижче поєднання клавіш Win+S запускає послідовність натискання клавіш. Зверніть увагу, що вікно, в яке ви друкуєте, має бути активним.
У прикладі, описаному вище, всі символи друкуються так, як прописані в скрипті, крім , т.к. цей запис означає натискання клавіші Enter як такої.
У наступному прикладі ми проілюструємо методи роботи з декількома найбільш часто використовуваними комбінаціями спеціальних клавіш:
У цьому прикладі натискання F7 повідомляє активному вікну комбінацію Control+C, потім Alt+Tab, потім слово "pasted:" і завершує комбінацією Control+V.
В описі команди Send можна знайти повний список символів, спеціальних клавіш та їх поєднань, що використовуються в програмі.
Кліки мишею: щоб повідомити вікна клік мишею, спочатку необхідно визначити координати X і Y, куди ви збираєтеся робити клік. Це можна визначити за допомогою утиліт AutoScriptWriter та Window Spy, які постачаються разом із AutoHotkey.
Ось як це робиться за допомогою Windows Spy: запустіть Window Spy. Активуйте вікно, що Вас цікавить. Наведіть курсор миші на потрібну точку та подивіться у вікні Window Spy її координати. Використовуйте ці координати для створення емуляції кліка миші. Наприклад:
Примітка: координати кліка завжди вважаються від верхнього лівого кута активного вікна. Вікно при цьому може знаходитися будь-де.
Для переміщення миші без кліка використовуйте команду MouseMove.Для перетягування або виділення мишею використовуйте команду MouseClickDrag.
Активація та маніпулювання вікнами
Для активації вікна (щоб зробити його поверх решти вікон), використовуйте команду WinActivate. Для визначення, чи з'явилося вікно взагалі, використовуйте команди IfWinExist або WinWait. У наступному прикладі ми проілюструємо ці команди:
Через крапку з комою дано рядкові коментарі до скрипту. Все, що написано після крапки з комою, скриптом не виконується.
Отже, у нашому прикладі спочатку скрипт шукає, чи є активне вікно "Untitled - Notepad". Якщо знайдено вікно, воно активується.
Якщо його не знайдено, запускається Блокнот, виконується очікування появи вікна, а потім воно активується. У нашому прикладі команда WinActivate звернена до останнього знайденого вікна, що дозволяє нам не вказувати конкретну назву кожного вікна.
Ось найчастіше використовувані команди маніпуляції вікнами:
- IfWinActive: Перевіряє, чи зараз шукане вікно.
- WinWaitActive: Очікує активізації вікна, що шукається (зазвичай застосовується наступною командою після Run).
- WinClose: Закрити вікно.
- WinMove: Переміщує або змінює розмір вікна.
- WinMinimize, WinMaximize, WinRestore: Згортає, розгортає або відновлює вікно відповідно.
Отримання зворотного зв'язку з використанням спеціальних вікон - MsgBox, InputBox і т.п.
У нашому прикладі після натискання F7 з'являється діалогове віконце з двома кнопками - "YES" і "NO":
F7:: MsgBox, 4, , Ви хочете продовжити? IfMsgBox, No, Return; рядок нижче виконується, якщо ви натиснули YES. MsgBox, Ви обрали YES. Return
Використовуйте команду InputBox, якщо ви хочете, щоб підтвердити вибір користувачеві необхідно було вдрукувати будь-яке слово у діалогове вікно.Команди FileSelectFile та FileSelectFolder використовуються для вибору користувачем файлу чи папки. Для більш розвинених конструкцій, наприклад для створення інтерфейсної оболонки введення даних, використовуйте команди сімейства Gui.
Використання змінних та буфера обміну
Змінна - це якась зарезервована у пам'яті величина, яка може мати якесь значення. Значення змінної може бути серією букв або цифр. Незважаючи на те, що теоретично немає різниці між текстом і цифрами, в деяких випадках чисто цифрова величина обчислюється програмою зовсім по-іншому, ніж будь-яка інша. Наприклад, у виразі InputString > BookmarkString порівняння двох значень йтиме, ніби вони містили не літери, а цифри. Інакше вони будуть порівнюватися в алфавітному порядку.
Крім локальних змінних у функціях, всі змінні мають глобальний характер, тобто. їх вміст може бути прочитаний або змінений будь-якою процедурою всього скрипту загалом. На додаток до цього треба сказати, що змінні власними силами спеціально не оголошуються, вони ініціалізуються автоматично.
Для демонстрації присвоєння рядка змінного розглянемо наступний приклад:
Для порівняння складу змінних, що складаються з цифр та букв, зробимо таке:
Зверніть увагу, у рядку вище друга згадка про змінну MyVar1 укладено в значки відсотків. На цьому місці буде відтворено вміст змінної. Ця ж техніка використовується для копіювання вмісту однієї змінної до іншої, оточуючи різні змінні власними значками відсотків. Так, у прикладі, наведеному нижче, змінна MyVarConcatenated має значення "123 my string" (без лапок):
Як ілюстрацію порівняння значення однієї змінної з іншою, розглянемо наступний приклад:
Зверніть увагу, у прикладі, наведеному вище, використані круглі дужки. Круглі дужки позначають, що if-оператор містить математичний вираз. В іншому випадку рядок буде читатися як "що не містить математичних виразів if-оператор", і тоді змінна ItemLimit повинна полягати в значки відсотків. При цьому if-оператор буде лімітований до одного порівняльного знака. Також він не зможе містити в собі математичних знаків або таких сполучних, як "AND" і "OR".
Математика: для виконання математичної операції використовуйте оператор двокрапки-рівність (:=), щоб присвоїти результат виразу змінної, як у наступному прикладі:
Повний список засобів для виконання математичних операцій можна знайти в розділі про змінні та вирази.
Буфер обміну: змінна під назвою "Clipboard" є спеціальною зміною, тому що. містить дані, що знаходяться в буфері обміну Windows в даний момент. У нашому прикладі, натиснувши F7, ви можете переглянути зміст буфера обміну вашого комп'ютера в цю хвилину:
Вигляд вікна, що показує текст, що міститься в буфері обміну, можна змінювати, перемежуючи поточний вміст буфера обміну з іншим текстом:
У прикладі, наведеному вище, значками `r і `n (акцент і букви r і n відповідно) позначено використання двох спеціальних дій: повернення каретки (як у машинці) і початок нового рядка. Таким чином, ці два значки дають сигнал до початку нового рядка тексту, ніби користувач натиснув у текстовому редакторі клавішу Enter.
Для додавання тексту до вмісту буфера обміну (як і до будь-якої іншої змінної), використовується наступний метод:
Більш детальну інформацію щодо буфера обміну та змінних можна знайти в однойменних розділах.
Повторення заданих дій знову і знову
Для виконання будь-якої задачі більше одного разу поспіль використовуйте команду Loop. Наприклад, змусимо віконце повідомлень MsgBox з'явитися тричі поспіль:
Ви також можете замість конкретної цифри повторів після команди Loop виставити змінну. Такий метод використовується в ситуаціях, коли кількість необхідних повторів визначається якимось іншим, додатковим фактором:
У нашому прикладі, Loop (циклічно замкнута ділянка скрипта) буде виконуватися таку кількість разів, якій дорівнює значення змінної % RunCount%. Якщо це значення дорівнює нулю, тоді вся ця операція пропускається.
Loop також може самоперериватися, як тільки один або кілька ключових факторів змінюються:
У прикладі, наведеному вище, використаний метод, який іноді називають "роби. до". Тобто виконання скрипту продовжується доти, доки ключовий фактор не набуває заданого значення. У нашому випадку, кліки на кнопці продовжуються доти, поки колір пікселя під курсором не зміниться на шуканий. Відразу після цього виконання "кільцевої" ділянки скрипта зупиняється і скрипт продовжує виконуватися з рядка, наступного відразу за фігурною дужкою, що замикає "кільце".
Приклад, наведений вище, ілюструє загальний принцип використання Loop. Для більш вузькоспеціалізованих цілей ви можете використовувати наступні різновиди Loop:
File-reading/writing loop: Читання/запис файлів, циклічно: Здійснює пошук рядків у текстовому файлі, по одному рядку за цикл. Це може бути використане для переведення файлу в інший формат або редагування його на рядковій основі.Також цей інструмент може використовуватися для пошуку у файлі рядків, які відповідають заданим параметрам.
Files and folders loop: Здійснює пошук за файлами чи папками, по одному файлу/папці за цикл.
Parsing loop: Здійснює пошук по рядку, аналізуючи слова. Це дозволяє, наприклад, такий рядок як "Red, Green, Blue" розбити на три частини і потім уже працювати з кожною частиною окремо.
Registry loop: Здійснює пошук по реєстру, перебираючи рядковий вміст заданого ключа реєстру.
Маніпуляції з файлами та папками
Для додавання тексту до будь-якого текстового файлу (або для створення нового текстового файлу) використовуйте наступний механізм:
Зверніть увагу - у прикладі використано значок старту нового рядка (`n), тобто одразу після додавання нашого тексту буде розпочато новий рядок.
Для перезапису наявного файлу, використовуйте команду FileDelete перед використанням FileAppend.
Тобто, фактично, спочатку ми видаляємо старий текстовий файл, а потім за допомогою команди FileAppend створюємо на його місці новий, з потрібним нам вмістом.
Декілька інших команд, які найчастіше використовуються для маніпуляцій з файлами і папками:
- FileRead: Читає вміст файлу.
- File-reading Loop: Перебирає вміст файлу, рядково.
- IfExist: Визначає, чи є у наявності шукані файл/папка.
- FileSelectFile та FileSelectFolder: Відкриває діалогове вікно вибору файлу чи папки.
- FileDelete/FileRecycle: Видаляє безповоротно / у кошик один або більше файлів. Для видалення цілої папки використовуйте команду FileRemoveDir.
- FileCopy/FileMove: Копіює/переміщає один і більше файлів. Для копіювання/переміщення папок використовуйте команди FileCopyDir/FileMoveDir.
- File Loop: Здійснює пошук файлів або папок, що містяться в конкретній папці, по одному за цикл.
- FileSetAttrib and FileSetTime: Змінює атрибути та дату створення одного або кількох файлів.
- IniRead, IniWrite та IniDelete: Створення, доступ та робота з INI-файлами стандартного формату.
- RegRead, RegWrite, RegDelete та Registry Loop: Робота з реєстром Windows.
Скрипти -Autohotkey
Кожен скрипт є простим текстовим файлом, що містить команди, які потім виконуватиме програма (AutoHotkey.exe). Скрипт також може містити гарячі клавіші та рядки автозаміни, і навіть повністю складатися з них. Однак, без гарячих клавіш і рядків автозаміни, після запуску скрипта його команди виконуються послідовно один за одним зверху донизу.
Під час запуску скрипти оптимізуються та перевіряються. Повідомлення про помилки відображаються на екрані. Скрипт може бути запущений (працюватиме) тільки після їх виправлення.
Секція авто-виконання: верхня секція скрипта, що автоматично виконується.
Escape-послідовності: використання символів `% та `, для вказівки на буквальні знаки відсотка чи коми.
Коментарі у скриптах: використання крапки з комою та символів /*. */ для додавання до скрипту приміток.
Розбивка довгих рядків на ряд коротших: підвищує зручність читання та експлуатації скрипту.
Мобільність AutoHotkey.exe: щоб запустити будь-який .ahk-файл, достатньо мати копію виконуваного файлу AutoHotkey.exe.
Конвертація скрипта у виконуваний EXE-файл (ahk2exe): конвертація скрипта з розширенням .ahk у .exe-файл, який потім можна запустити на будь-якому комп'ютері.
Налагодження скрипта: як знайти помилки в неправильно працюючому скрипті.
Секція авто-виконання
Програма, рядок за рядком, завантажує скрипт на згадку (кожний рядок може містити до 16 383 символів). Після завантаження програма виконує скрипт доти, доки не дійде до команд Return, Exit, мітки гарячої клавіші або рядка автозаміни, або кінця скрипта (залежно від того, що стоїть першим). Ця верхня частина скрипта називається секцією авто-виконання.
Скрипт, що не завершує роботу автоматично і не містить гарячі клавіші та рядки автозаміни, закінчує свою роботу після закінчення секції авто-виконання. Інакше, він буде працювати в стані очікування, реагуючи на такі події, як запуск гарячих клавіш і рядків автозаміни, події GUI, виклик елементів меню і таймери.
Кожен потік, запущений гарячою клавішею, рядком автозаміни, викликом елемента меню, подією GUI або таймером, безпосередньо після запуску починає виконуватися, використовуючи значення за промовчанням для зазначених нижче параметрів, як задано в секції авто-виконання. Якщо значення не задані, будуть використані стандартні значення за замовчуванням (як описано в документації для кожної з наступних команд): DetectHiddenWindows, DetectHiddenText, SetTitleMatchMode, SetBatchLines, SetKeyDelay, SetMouseDelay, SetWinDelay, SetControlDelay, SetdefaultMouse AutoTrim, SetFormat, StringCaseSense, Thread, і Critical.
Якщо для завершення роботи секції авто-виконання потрібно багато часу (або якщо секція ніколи не завершується), через 100 мілісекунд набувають чинності значення за замовчуванням наведених вище параметрів налаштування.Таким чином, зазвичай найкращим рішенням для скриптів, що містять гарячі клавіші, рядки автозаміни, таймери або елементи меню користувача, є внесення бажаних змін у значення за замовчуванням у верхній частині цих скриптів. Зверніть увагу, що кожен потік зберігає свій власний набір згаданих вище параметрів налаштування. Зміни, зроблені цих параметрах, не вплинуть інші потоки.
Escape-послідовності
У AutoHotkey escape-символом за умовчанням є знак акценту (`), що у верхньому лівому куті більшості англійських клавіатур. Використання цього символу замість зворотного сліша усуває необхідність у подвійному зворотному сліші в дорозі та імені файлу.
Так як у мові AutoHotkey коми та знаки відсотка мають спеціальне значення, то щоб задати буквальні кому та знак відсотка, використовується знак акценту `. Винятками з цього правила є команда MsgBox, де в екрануванні ком немає необхідності, і коми в останньому параметрі будь-якої команди - їх також не потрібно екранувати. Повний список escape-послідовностей - див. документацію директиви #EscapeChar.
Також за допомогою escape-послідовності задаються спеціальні символи. Найчастіше це `t (табуляція), `n (переклад рядка) та `r (повернення каретки).
Коментарі
У скрипті можна додавати коментарі на початку рядка після крапки з комою. Наприклад:
Також коментарі можна вставляти після команди. У цьому випадку перед точкою з комою має бути хоча б один пробіл або табуляція. Наприклад:
Також можна використовувати символи /* та */, щоб закоментувати цілий розділ. Однак у цьому випадку символи повинні ставитися на початку рядка, як показано в наступному прикладі:
Порада: можна опустити першу кому в будь-якій команді. Наприклад:
Розбивка довгих рядків на ряд коротших
Щоб підвищити зручність читання та експлуатації скрипта, можна розбити довгі рядки на сукупність коротших. Така розбивка не зменшує швидкодію, тому що в момент запуску скрипта розділені рядки поєднуються в пам'яті.
Спосіб №1 [v1.0.35.03+]: рядок, що починається з "and", "or", ||, &&, комою або крапкою автоматично об'єднується з рядком, що знаходиться безпосередньо вище від неї. У наступному прикладі другий рядок поєднується з першим, оскільки починається з комою.
Подібним чином наведені нижче рядки зіллються в один, тому що два останні рядки починаються з "and" або "or":
if (Color = "Red" або Color = "Green" або Color = "Blue" або Color = "Black" або Color = "Gray" або Color = "White") і ProductIsAvailableInColor(Product, Color)
Хоча робити відступи так, як в останньому прикладі, необов'язково, вони показують, які рядки є продовженням першого рядка. Також немає необхідності ставити додатковий пробіл після кожного з перших двох рядків – програма робить це автоматично. Крім того, між рядками або наприкінці кожного рядка в останньому прикладі можна додати порожні рядки або коментарі.
Спосіб №2 [v1.0.32+]: цей метод використовується для об'єднання великої кількості рядків, або якщо рядки не можна об'єднати за допомогою способу №1. Хоча цей спосіб призначений головним чином для простої автозаміни, його можна використовувати також будь-якої команди або виразу. Наприклад:
FileAppend, ; Тут необхідна кома. ( Рядок тексту. За замовчуванням жорстке повернення каретки (Enter) між цим і попереднім рядками буде записано у файл. За замовчуванням табуляція зліва від цього рядка також буде записана у файл.За замовчуванням посилання на змінні, такі як %Var%, замінюються значеннями змінних. ), C:\My File.txt
У наведеному прикладі ряд рядків, обмежених зверху та знизу парою круглих дужок, називається секцією продовження. Зауважте, що нижній рядок після закриває дужки містить останній параметр FileAppend. Цей параметр ставиться за бажанням: у цьому прикладі це зроблено, щоб кома була продемонстрована як обмежувач параметра, а не як буквальна кома.
Стандартну поведінку секції продовження можна змінити, якщо праворуч від секції, що відкриває, додати одну або кілька наведених нижче опцій. Кожна опція відокремлюється від попереднього пропуску. Наприклад: (LTrim Join|%
Join: визначає, яким способом рядки повинні з'єднуватись один з одним. Якщо ця опція пропущена, за кожним рядком (крім останнього) слідуватиме символ перекладу рядка (`n). Якщо встановлено одне слово Join, рядки будуть зістиковані безпосередньо один з одним без будь-яких символів між ними. Інакше відразу після слова Join можна задати до 15 символів. Наприклад, якщо задана опція Join`s, то після кожного рядка (крім останнього) буде вставлено пробіл (`s позначає буквальну прогалину – це спеціальна escape-послідовність, що розпізнається лише опцією Join). Ще один приклад: при заданій опції Join`r`n між рядками буде вставлено комбінацію CR+LF (повернення каретки + переклад рядка). Подібним чином, за Join| між рядками буде вставлено символ конвеєра (pipe). Щоб останній рядок у секції також закінчувався символами, вказаними в опції Join, вставте одразу ж над дужками, що закривають, порожній рядок.
LTrim: виключає пробіли та табуляцію на початку кожного рядка.В основному ця опція використовується для того, щоб розташувати рядки в розділі продовження в ієрархічному порядку. У версії 1.0.35.06 і вище цю опцію можна встановити відразу для багатьох секцій продовження. Для цього в рядку необхідно встановити опцію #LTrim (без додаткових символів). Опція #LTrim є позиційною - вона впливає на всі секції продовження, що (фізично) знаходяться нижче за неї. Налаштування можна вимкнути за допомогою #LTrim Off.
RTrim0 (RTrim + цифра 0): вимикає пропуск пропусків та табуляції в кінці кожного рядка.
% (знак відсотка): трактує знак відсотка як буквальний, а чи не як посилання змінну. Усуває потребу екранувати кожен знак відсотка. Ця опція не потрібна там, де знак відсотка вже є буквальним (наприклад, у простій автозаміні).
, (кома): трактує коми як обмежувачі, а не як буквальні коми. Ця опція, що рідко використовується, потрібна тільки для ком між параметрами команд, так як у викликах функцій тип коми не має значення. Таким чином, ця опція перетворює тільки ті коми, які фактично обмежують параметри. Іншими словами, як тільки досягнуть останній параметр команди (або якщо в команді параметри не задані), коми трактуються як буквальні.
` (Акцент): трактує кожен символ акценту буквально, а не як escape-символ. Ця опція також виключає екранування ком та знаків відсотка явно і окремо. Крім того, опція виключає перетворення будь-якої заданої явно escape-послідовності, як `r or `t.
Секція продовження підтримує такі escape-послідовності, як `n (переклад рядка) and `t (табуляція), крім випадків, коли встановлено опцію (`) (акцент).
Секція продовження не підтримує коментарі (точка з комою та /*..*/), оскільки розглядає їх як буквальний текст. Однак коментарі можна додати у верхньому та нижньому рядках секції продовження. Наприклад:
FileAppend, ; Коментар. ; Тут підтримуються коментарі (v1.0.35.06+). ( LTrim Join ; Коментар. ; Це не коментар; Це буквальний текст. ), C:\File.txt ; Коментар.
Як видно з прикладу, екранувати крапки з комою в секції продовження немає потреби.
Довжина рядка в секції продовження не може бути більше 16383 символів (якщо їх більше, програма попередить вас у момент запуску скрипта). Єдиний спосіб обійти це обмеження – це використовувати конкатенацію (тобто зчеплення) рядків, наприклад, додавши до змінної кілька секцій продовження:
Var = (.) Var = % Var% `n; За допомогою ще однієї секції продовження додаємо до змінного додатковий текст. ( . ) FileAppend, %Var%, C:\My File.txt
Закриваюча дужка позначає кінець секції продовження, тому щоб почати рядок з буквальної дужки, що закриває, потрібно поставити перед нею символ акценту.
Формування секції продовження з кількох частин за допомогою #Include не підтримується.
За секцією продовження може відразу йти рядок, що містить дужку, що відкриває інший секції продовження, що дозволяє в процесі створення єдиного рядка змінювати опції, описані вище.
Мобільність AutoHotkey.exe
Все, що потрібно для запуску будь-якого .ahk-скрипта - це файл AutoHotkey.exe.
Конвертація скрипту у виконуваний файл EXE (ahk2exe)
Завдяки вихідному коду AutoIt v3 Джонатана Беннета (Jonathan Bennett) у пакет AutoHotKey входить компілятор скриптів.AutoHotKey не підтримує скрипти AutoIt версії 2, тому, якщо є потреба у їх використанні, потрібно спочатку автоматично конвертувати .aut-файл у файл з розширенням .ahk.
Після конвертації скрипт стає самостійним виконуваним файлом, тобто його можна запустити навіть на тих комп'ютерах, де програма AutoHotkey не встановлена (такі exe-файли можна розповсюджувати без обмежень). У процесі компіляції скрипт, всі файли, що входять до нього, і ті файли, які були включені (додані) в результаті виконання команди FileInstall, стискаються і зашифровуються.
Компіляція не підвищує швидкодію скрипта. На практиці скомпільований скрипт працює навіть трохи повільніше, оскільки спочатку його необхідно декодувати і розпакувати в пам'ять, а вже потім оптимізувати, як звичайний скрипт.
Ahk2Exe можна запустити так:
- Через графічний інтерфейс користувача (GUI): У меню Пуск виберіть: Усі програми > AutoHotkey > Convert .ahk to .exe. У вікні вкажіть шлях до файлу, що компілюється, і, опціонально, назва вихідного exe-файлу, шлях до файлу з іконкою для нього і пароль.
- Правим клацанням миші: у вікні провідника клацніть правою клавішею миші по іконці .ahk-файлу та виберіть елемент меню "Скомпілювати скрипт" (доступний, якщо під час встановлення програми AutoHotkey встановлена опція "компілятор скрипта"). В результаті через короткий час у тому ж каталозі буде створено файл EXE з тим же базовим ім'ям, що і скрипт. Примітка: Створений EXE-файл буде використовувати таку ж іконку і рівень стиснення (компресії), які востаннє використовувалися в першому методі і у нього не буде пароля.
Щоб при компіляції даним способом завжди використовувалася стандартна іконка AHK, потрібно виконати наступний рег-файл:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Compile\Command] \"\"
Або вручну відредагувати параметр "за замовчуванням" гілки реєстру HKEY_CLASSES_ROOT\AutoHotkeyScript\Shell\Compile\Command, замінивши його на
- Якщо ви плануєте розповсюджувати ваш EXE-файл і не хочете, щоб вихідний код був доступний для перегляду, введіть пароль. Пам'ятайте, що довгі та складні паролі набагато безпечніші, ніж короткі.
- Команди #NoTrayIcon та "Menu, Tray, ShowMainWindow" впливають на поведінку скомпільованих скриптів.
- Щоб отримати початковий скрипт, можна "декомпілювати" файл, що виконується, за допомогою утиліти Exe2Ahk (утиліта запускається з командного рядка). Однак, при цьому всі коментарі у скрипті (позначені як крапками з комою, так і символами /**/) будуть втрачені.
- У скомпільований скрипт можна додати інформацію про версію (у тому ж вигляді, як у діалозі властивостей файлу в Провіднику). Для цього можна використовувати якусь утиліту, подібну до Resource Hacker (ця утиліта поширюється вільно), щоб відредагувати файл "AutoHotkeySC.bin". Цей файл міститься в підпапці "compiler", у папці, в яку було встановлено AutoHotkey. Примітка: утиліта Resource Hacker псує скрипти, тому редакції підлягає тільки файл AutoHotkeySC.bin.
- Наведений вище метод можна також використовувати для зміни або додавання нових іконок у всі скомпільовані скрипти.
- Якщо скрипт запущено у скомпільованій формі, вбудована змінна A_IsCompiled має значення 1.Інакше порожнє значення [у версіях 1.0.27 і вище].
Передача скрипту параметрів командного рядка
Скрипти підтримують параметри командного рядка у такому форматі:
Для скомпільованих скриптів формат такий:
Параметр Switches може бути нульовим або мати одне з таких значень:
/f or /force - запускає скрипт без будь-яких умов, ігноруючи усі попереджувальні повідомлення.
/r or /restart - Показує, що скрипт перебуває у процесі перезавантаження (також це значення внутрішньо використовується командою Reload).
/ErrorStdOut - Посилає синтаксичні помилки в stdout, а не відображає діалог. Докладніші відомості див. у описі директиви #ErrorStdOut.
Параметр Filename Script можна опустити, якщо параметрів скрипта немає. Якщо параметр Script Filename опущений, буде запущено файл AutoHotkey.ini в поточній робочій директорії (або користувачеві буде запропоновано створити 1 ).
Як Script Parameters може бути будь-який рядок, який ви хочете передати скрипту (рядок, що містить прогалини, необхідно укласти в подвійні лапки). Скрипт розглядає вхідні параметри як змінні %1%, %2% тощо. Крім того, змінна %0% містить кількість переданих параметрів (0, якщо жодних параметрів не передано). Наступний приклад перериває виконання скрипта, якщо передано надто мало параметрів:
1 Файл AutoHotkey.ini, розташований у каталозі програми, є своєрідним "скриптом за замовчуванням". Вміст цього файлу повністю аналогічний будь-якому ahk-скрипту. Якщо AutoHotkey.exe запускається без параметрів, буде запущено цей скрипт. Якщо AutoHotkey.exe запускається без параметрів, але файл AutoHotkey.ini не існує, він буде створений, але замість запуску (виконання) просто відкритий в Блокноті.
