AutoHotkey | |
---|---|
| |
Тип | Язык сценариев |
Автор | |
Разработчик | AutoHotkey Foundation LLC[d][1] |
Написана на | C++[2] |
Операционная система | Microsoft Windows |
Аппаратная платформа | Microsoft Windows |
Последняя версия | |
Читаемые форматы файлов | AHK script[d] |
Лицензия | GNU GPL |
Сайт | autohotkey.com |
AutoHotkey — свободно распространяемый язык для автоматизации выполнения задач в Microsoft Windows.
AutoHotkey является языком программирования сценариев (скриптов), приспособленный к лёгкому назначению и переназначению горячих клавиш, включая кнопки мыши и джойстика. Скрипты представляют собой текстовые файлы, с расширением «.ahk». В комплект поставки входит утилита, позволяющая «скомпилировать» их в EXE файлы, и запускать на любом компьютере с ОС Windows, при этом в создаваемый файл могут быть включены другие файлы, извлекаемые при запуске.
AutoHotkey позволяет автоматизировать задачи пользователя Windows таким образом, какой невозможен или затруднён в других языках программирования. Кроме того, этот язык компактен, самодостаточен и работает на всех версиях Windows «прямо из коробки».
AutoHotkey можно использовать для симуляции действий клавиатуры, мыши и джойстика, запуска программ, изменения их интерфейса, управлять окнами, файлами и папками, работать с буфером обмена и системным реестром. Команды могут быть вызваны горячими клавишами.
Также имеются возможности создания GUI, отправки и приёма оконных сообщений, вызова функций DLL, обработки текста при помощи регулярных выражений.
AutoHotkey возник как ответвление проекта AutoIt, когда её автор предложил встроить более тесную поддержку горячих клавиш в AutoIt v2, но не нашёл понимания. Так автор решил разработать собственный язык, основанный на синтаксисе AutoIt v2 и использующий некоторые возможности AutoIt v3.
В настоящее время развитие изначальной ветки — AutoHotkey 1.0 (впоследствии названной AutoHotkey Classic или AutoHotkey Basic) — прекращено её создателем Chris_Mallett'ом. Официальный наследник — AutoHotkey_L (AutoHotkey 1.1) — развивается силами сообщества во главе Steve Gray (Lexikos) и fincs, эта версия предоставляет поддержку Юникода, 64-разрядной архитектуры, массивов, объектов с прототипным конструированием, а также COM и элементов управления ActiveX в GUI. Далее tinku99 разработал неофициальную версию AutoHotkey_N, важнейшей чертой которого была компиляция в Dll, эта версия была самой не популярной. Следующей была AutoHotkey_H (v.1), разработчиком был HotKeyIt, эта версия построена базе AutoHotkey_N, отличился возможностью защиты кода и многопоточностью, возможностью вызывать ахк код из других приложений через COM или вызов в Dll, так же сильно увеличился функционал компиляции в Dll. Добавлена поддержка криптографии, MemoryModule и структур в стиле C. Важным недостатком стало нестабильность запуска, обычно на Windows 10. Следующим этапом стала разработка AutoHotkey_H (v.2), разработчик остался прежним, в общих чертах не отличался от 1-ой версии, но было произведено реструктурирование синтаксиса, что сделало его более приближенным к C++, несмотря на это она является альфа-версией.
Кратким названием AutoHotkey является AHK.
Возможности языка включают:
Интерпретатор AutoHotkey имеет небольшой размер и не требует обязательной установки. Для работы достаточно основного файла, а для создания скрипта — любого текстового редактора. Для запуска без интерпретатора скрипт необходимо предварительно скомпилировать.
Для AutoHotkey существует интегрированная среда разработки под названием SciTE4AutoHotkey, основанный на бесплатном редакторе SciTE. Компилятор, вспомогательные утилиты и справочные материалы полностью интегрированы, что делает редактор стандартным окружением для разработчиков, использующих AHK. Компилятор AHK и среда разработки SciTE легко устанавливаются и в дополнительной настройке не нуждается.
Подобно другим скриптовым языкам, AutoHotkey— язык третьего поколения, использующий классическую модель и переменные вариантного типа, позволяющие хранить различные типы данных, включая массивы. Однако, помимо возможностей, встроенных в ядро AutoHotkey, можно воспользоваться большой библиотекой готовых функций.
Популярное использование AutoHotkey:
Для упрощения разработки графических интерфейсов существует визуальный редактор SmartGUI Creator.
Исходный код AutoHotkey всех версий на языке С++ доступен для загрузки на GitHub.
Текущая версия языка доступна для скачивания на официальном сайте проекта, также как и предыдущие релизы.
Программа «Привет, мир»:
1 ; Выводит стандартное окно с названием «Пример», надписью «Привет, мир!» и кнопкой «ОК».
2 MsgBox, 0, Пример, Привет, мир!
Создание диалогового окна:
1 ; Выводит диалоговое окно с кнопками «Да» и «Нет». В случае нажатия «Да» — выход из программы.
2 MsgBox, 4, Вопрос, Хотите выйти из программы?
3 IfMsgBox, Yes
4 ExitApp
5 else
6 MsgBox, Спасибо что остались с нами.
Запуск блокнота:
1 Run, notepad.exe
Будильник на 12 часов и 00 минут:
1 SetTimer, CheckTime, 300 ; Установка таймера на метку раз в 300 милисекунд.
2 return ; Конец раздела автоматического выполнения. Сценарий приостанавливается, пока не сработает метка.
3
4 CheckTime:
5 if (A_Hour == 12 && A_Min == 00) ; Если время настало.
6 {
7 ToolTip, Будильник. ; Выводим сообщение.
8 Sleep, 3000 ; Ждем 3 секунды.
9 ToolTip ; Скрываем сообщение.
10 }
11 return
Скрытие/Показ курсора при нажатии Win + C.
1 ; Скрывает/Показывает курсор мыши при нажатии клавиши Win + C.
2
3 OnExit, ShowCursor ; При завершении работы скрипта, показываем курсор.
4 return ; Конец раздела автоматического выполнения. Сценарий приостанавливается, пока пользователь не сделает что-нибудь.
5
6 ShowCursor:
7 SystemCursor("On")
8 ExitApp
9
10 #c::SystemCursor("Toggle") ; При нажатии на Win + C показываем/скрываем курсор.
11
12 SystemCursor(status := 1)
13 {
14 static AndMask, XorMask, $, hСursor
15 , c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; Системный курсор.
16 , b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 ; Пустой курсор.
17 , h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13 ; Дескрипторы курсора по умолчанию.
18 if (status = "Init" or status = "I" or $ = "") ; Инициализация при первом вызове.
19 {
20 $ = h ; Активный курсор по умолчанию.
21 VarSetCapacity( hСursor,4444, 1 )
22 VarSetCapacity( AndMask, 32*4, 0xFF )
23 VarSetCapacity( XorMask, 32*4, 0 )
24 system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650
25 StringSplit c, system_cursors, `,
26 Loop %c0%
27 {
28 hСursor := DllCall("LoadCursor", "Ptr", 0, "Ptr", c%A_Index%)
29 h%A_Index% := DllCall("CopyImage", "Ptr", hСursor, "UInt", 2, "Int", 0, "Int", 0, "UInt", 0)
30 b%A_Index% := DllCall("CreateCursor", "Ptr", 0, "Int", 0, "Int", 0, "Int", 32, "Int", 32, "Ptr", &AndMask, "Ptr", &XorMask)
31 }
32 }
33 if (status = 0 or status = "Off" or $ = "h" and (status < 0 or status = "Toggle" or status = "T"))
34 $ = b ; Используем пустой курсор.
35 else
36 $ = h ; Используем системный курсор.
37
38 Loop %c0%
39 {
40 hСursor := DllCall( "CopyImage", "Ptr",%$%%A_Index%, "UInt",2, "Int",0, "Int",0, "UInt",0 )
41 DllCall("SetSystemCursor", "Ptr", hСursor, "UInt", c%A_Index%)
42 }
43 }
Пример скрипта с использованием графического интерфейса:
1 Gui, Add, Text,, Имя:
2 Gui, Add, Text,, Фамилия:
3 Gui, Add, Edit, vFirstName ym ; Параметр ym запускает новый столбец элементов управления.
4 Gui, Add, Edit, vLastName
5 Gui, Add, Button, default, OK ; Метка ButtonOK (если она существует) будет запущена при нажатии кнопки.
6 Gui, Show,, Простой Пример Ввода
7 return ; Конец раздела автоматического выполнения. Сценарий приостанавливается, пока пользователь не сделает что-нибудь.
8
9 ButtonOK:
10 Gui, Submit ; Сохраняет входные данные пользователя в связанную переменную каждого элемента управления.
11 MsgBox Ваша Имя Фамилия: "%FirstName% %LastName%".
12 GuiClose: ; Запускается при закрытии интерфейса.
13 ExitApp
Это заготовка статьи о свободном программном обеспечении. Вы можете помочь проекту, дополнив её. |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .