Ahk как пользоваться
Ahk как пользоваться
Начать возможно, будет даже легче, чем вы думаете. Прочитайте раздел «Общий обзор программы и краткое обучение».
Еще немного о «горячих» клавишах
AutoHotkey использует весь потенциал клавиатуры, джойстика или мыши. Например, кроме обычных Control, Alt и Shift, в качестве модификаторов можно использовать также клавиши Windows и Capslock. Фактически, модификатором можно сделать любую клавишу или кнопку мыши. Чтобы узнать об этих и других возможностях, см. соответствующий раздел.
Другие возможности
Лицензия: GNU General Public License.
Благодарности
Особая благодарность Джонатану Беннету (Jonathan Bennett) за выпуск в свет в 1999 году бесплатной программы AutoIt v2. Ваша щедрость экономит время и является вдохновением для меня и многих других во всем мире. Кроме того, многие дополнения AutoHotkey к набору команд AutoIt v2, а также Window Spy и скриптовый компилятор были взяты непосредственно из исходного кода AutoIt v3. Большое спасибо за это Джону (Jon) и другим создателям AutoIt.
И наконец, AutoHotkey не был бы тем, чем он является на сегодняшний день, если бы не множество ещё других людей, имена которых вы можете увидеть, воспользовавшись специальной ссылкой в тексте оригинала этой статьи.
Краткое обучение (начать здесь)
Оказавшись на этой странице, вероятно, вы собираетесь начать осваивать язык автоматизации Autohotkey.
В этой статье описана установка программы, ее базовые возможности и примеры кода. Наберитесь терпения, запасайтесь чаем и приступаем 🙂
Все интересующие вопросы вы можете задать в нашей группе Вконтакте.
Autohotkey в играх
Обратите внимание, что макросы запрещены во многих играх. За использование Autohotkey ваш аккаунт может быть забанен!
Кроме этого, многие современные игры имеют активный античит, препятствующий программной эмуляции нажатий. Это значит, что нажатия, воспроизводимые скриптом могут игнорироваться. Мы не содействуем читерству, и если античит блокирует работу Autohotkey в определенной игре- не будем помогать вам обойти защиту!
Стоит так же учитывать, что Autohotkey разработан для взаимодействия со средой Explorer’a и его окон. Такие команды как PixelSearch, PixelGetColor и ImageSearch вероятнее всего не будут работать в полноэкранных 3D приложениях. Чаще всего Autohotkey воспринимает окна с отрисовкой 3D как черный квадрат (цвет 0x000000). Иногда проблема решается переводом игры в оконный режим, но корректная работа все равно не гарантируется и единого решения НЕТ.
Установка Autohotkey и редактора Notepad++
Перед началом работы неплохо бы скачать Autohotkey с оффициального сайта.
После запуска инсталятора выбираем Unicode версию программы, иначе получим иероглифы вместо русских букв. Лучше выбрать разрядность, соответствующую вашей ОС. Но стоит помнить что скрипты, скомпилированные x64 версией не запустятся на 32-разрядных ОС.
Для редактирования скриптов можно использовать любой текстовый редактор, включая «Блокнот». Но для удобства работы с кодом лучше использовать Notepad++, который так же скачиваем с оффициального сайта и устанавливаем.
После установки вам понадобится файл подсветки синтаксиса Autohotkey userDefineLang_AHK.xml. Сохраняем его в любое удобное место.
Теперь запускаем Notepad++, в меню «Синтксисы» выбираем «Задать свой синтаксис. «. В открывшемся окне жмем «Импортировать» и выбираем скачанный файл.
После перезапуска программы в меню «Синтаксисы» появится Autohotkey, а файлы с расширением .ahk будут сразу открываться с подсветкой синтаксиса.
Рекомендую сразу включить отображение расширений файлов в системе. Для этого откройте любое окно проводника, в верхнем меню «Файл» выберите пункт «Параметры папок и поиска». В открывшемся окне во вкладке «Вид» снимите галочку «Скрывать расширения для зарегистрированных типов файлов».
Создание первого скрипта
После того, как среда Autohotkey и текстовый редактор установлены, можно приступать к созданию первого скрипта.
Скрипты являются обычными текстовыми файлами, имеющими расширение .ahk. Запускаются как любое приложение, двойным кликом мыши.
Чтобы отредактировать скрипт, нажмите на нем ПКМ > Открыть с помощью > Notepad++.
Создайте скрипт со следующим кодом и запустите его. Если вы увидели окно с приветствием- все установлено правильно и можно продолжать.
Порядок исполнения команд
Обратите внимание! Данный пункт крайне важен для понимания работы программы.
В момент запуска скрипта, команды начинают выполняться по очереди сверху вниз. Выполнение новой команды не будет начато до тех пор, пока не окончена предыдущая.
Так интерпретатор будет последовательно исполнять код, пока не встретит Return. Эта команда прерывает текущий поток. С его помощью обозначаются пределы макрокоманды, а так же возвращаются значения из функций.
Если по мере выполнения кода встречается цикл- он выполняется до тех пор, пока истинно его условие, или он не будет разорван командой Break. Как выглядят циклы мы разберем чуть ниже, не торопитесь 🙂
Комментарии в коде и отладка
Когда нужно оставить в коде строчку с пояснением- на помощь приходит комментарий, по умолчанию он отделяется точкой с запятой. Вся строка после ; игнорируется интерпретатором. Обратите внимание, что в Autohotkey нет многострочных комментариев! Каждая строка экранируется отдельно.
Для отладки кода (проверки условий, просмотра значений переменных и т.д.) проще всего использовать команды MsgBox и ToolTip. Первая выводит информацию в виде окна и ждет подтверждения, вторая показывает всплывающую подсказку и не прерывает выполнение кода.
Горячие клавиши
Основным назначением Autohotkey является назначение горячих клавиш. Они представляют собой сочетания клавиш и кнопок мыши, при нажатии которых выполняется заданная последовательность команд (макрокоманда, она же- макрос).
Запись горячей клавиши может иметь однострочный и многострочный вид, в зависимости от необходимого количества команд.
Перед двоеточием указывается клавиша или сочетание клавиш, вызывающие действие. Больше о горячих клавишах можно узнать здесь. Так же, наверняка, вам пригодится список клавиш и кнопок мыши.
Строки автозамены
Строки автозамены имеют тот же принцип, что и горячие клавиши, но заменяют не сочетание клавиш, а фрагмент строки. Чаще всего используются для развертывания аббревиатур.
Все возможности строк автозамены, такие как чувствительность к регистру, замена части слова, задержка нажатий- ищите в соответствующей Статье.
Эмуляция нажатий
Для эмуляции нажатий и ввода текста используется команда Send.
Она имеет несколько вариаций: Send, SendPlay, SendInput и SendRaw. Подробно про их отличия можно прочитать по ссылке выше.
Переменные и выражения
Для хранения и обработки информации служат переменные. Во вступительном гайде мы рассмотрим лишь три основных вида: логический, числовой и текстовый. Переменные в Autohotkey динамически изменяют свой тип в зависимости от последнего присвоенного значения.
Логический (булевый) тип предназначен для хранения 1 или 0 (true или false). Чаше всего используется в условиях, где есть всего два варианта выбора, а так же в функциях, для обозначения успешности или провала операции.
Числовой тип, как не сложно догадаться, применяется для операций с числами. Поддерживается большинство арифметических операций, а так же десятичные дроби.
Строковый тип хранит отдельные символы или фрагменты текста. Работа со строками немного отличается от цифровых и булевых переменных- для них есть целый ряд специальных строковых функций.
Логическое ветвление
Наверняка вы уже задумались, как выполнять действие только при соблюдении конкретного условия? На помощь приходит ветвление с логическими операторами if и else. Так же существуют и другие команды, представляющие собой условие.
Пожалуй, самым простым применением условия является назначение двух чередующихся действий на одну и ту же горячую клавишу. В этом примере введена переменная, которая принимает противоположное значение при каждом новом вызове ГК.
Еще одним примером может служить определение времени суток:
Блок кода <>
Блок кода обозначается фигурными скобками и объединяет несколько комад или функций. Он нужен чтобы указать интерпретатору, что несколько команд нужно выполнить вместе. Чаще всего блок <> используется для группировки команд внутри условий или циклов.
Циклы
Для повторения определенного участка кода несколько раз используются циклы. В Autohotkey их несколько видов, самым простым из которых является Loop.
Запуск программ, открытие ссылок
Для запуска EXE приложений, открытия окон проводника или браузера используется команда Run.
Команды и функции
В Autohotkey есть две основных структуры: команды и функции. Обе предназначены для выполнения какого-либо действия, но отличаются способом записи.
У многих команд есть функция-двойник, выполняющая ту же операцию.
В отличае от функций, команды нельзя комбинировать или использовать одну команду как аргумент другой.
Команды не используют скобки вокруг параметров, вы можете легко отличить их от функций:
Обратите внимание, что:
Заключение
В этой статье приведены самые базовые возможности программы. Полный список функций можно найти на Главной странице справочника.
Рекомендуем последовательно пройти по описанию всех команд для примерного понимания их назначения перед тем, как начинать писать свой первый скрипт 🙂
Перед тем, как приступить к написанию кода, необходимо составить алгоритм. Распишите по шагам, что должна делать ваша программа. Так будет гораздо проще искать команды, необходимые для выполнения каждого из шагов.
Как пользоваться AutoHotkey
AutoHotkey — бесплатная программа с открытым исходным кодом для создания макросов и автоматизации задач. Подробнее см. на «Википедия» по ссылке.
Я же приведу небольшую инструкцию того, как начать пользоваться AutoHotkey на примере задачки со сменой языка ввода.
Для тех, кому интересна данная тема, советую подписаться на telegram канал AutoHotKey.
Начнём с установки требуемого программного обеспечения — здесь без подробностей. Зайдите на официальный сайт autohotkey.com, скачайте инсталлятор и установите AutoHotkey.
Теперь попробуем создать AutoHotkey скрипт. Кликните правую кнопку мыши на рабочем столе Windows, выберите « Создать» и кликните пункт « AutoHotkey Script».
Наведите курсор на ярлык созданного файла, кликните правую кнопку мыши и пункт « Edit Script».
Примечание: скрипт будет открыть в окне обычного текстового редактора Notepad.
Примечание: знак точки с запятой (;) является началом закооментированной после него строки (комментария).
Полный список обозначений клавиш, кнопок мыши и прочего см. по ссылке.
Наконец рассмотрим пример создания AutoHotkey скрипта для смены языка ввода. В Windows для этого обычно используется Ctrl+Shift или Alt+Shift, а мы добавим комбинации клавиш Win+1 для русского языка и Win+2 для английского языка. Получим:
Здесь используется команда SendMessage, которая посылает сообщение окну или элементу управления.
Полный список команд и функций AutoHotkey см. по ссылке.
Команда SendMessage имеет следующий синтаксис:
SendMessage, Msg [, wParam, lParam, Control, WinTitle, WinText, ExcludeTitle, ExcludeText, Timeout]
Более сложные примеры этой темы см. по ссылке.
Запустите AutoHotkey двойным кликом по ярлыку скрипта, откройте нужное окно программы (например, MS Word) и используйте комбинации Win+1 и Win+2 для смены языка ввода.
Это короткое вступление поможет вам начать создавать свои собственные макросы и комбинации горячих клавиш.
Туториал содержит
Создание скрипта
Создание нового скрипта:
Создайте в Блокноте или любом другом текстовом редакторе текстовый файл следующего содержания:
Примечание: программа допускает использование нескольких скриптов одновременно. При этом каждый из них будет отображаться со своей собственной иконкой в трее. Чтобы выставить свою собственую иконку в замен дефолтной, добавьте в скрипт следующую строчку:
Само-собой, адрес к иконке прописываем собственный.
Запуск программы или документа
Для запуска программы, файла, документа, ярлыка используется команда «Run», например:
Оба примера, описанные выше, являются однострочными, т.к. содержат всего одну команду. Для того же, чтобы запустить нажатием клавиш несколько команд, пишем на первой строке наши командные клавиши, далее ниже сами команды, а последней строчкой пишем Return. Например:
Если программа или документ не являются интегрированными в систему Windows, нам будет необходимо указывать полный путь к файлу, который мы собираемся запустить, например:
В вышеприведенном примере папка %ProgramFiles% является системной, поэтому конретный путь к ней можно не прописывать. Такой вариант скрипта, по сравнению с вариантом записи C:\Program Files, является более универсальным, т.к. на другом компьютере ProgramFiles может находиться например на диске D:\.
Если вам нужно, чтобы скрипт подождал, пока закроется какая-либо программа или файл, и только потом продолжил свою работу дальше, используйте вместо команды Run команду RunWait. В следующем примере, команда MsgBox не запускается до тех пор, пока не закроется Блокнот:
Эмуляция нажатий клавиш и кликов мышью
Нажатия клавиш как правило посылаются в активное в данный момент окно и для этого программой используется команда Send. В примере ниже, сочетание клавиш Win+S запускает последовательность нажатия клавиш. Обратите внимание, что окно, в которое вы «печатаете», должно быть активным.
В примере, описанном выше, все символы печатаются точно так, как прописаны в скрипте, за исключением
В следующем примере мы проиллюстрируем методы работы с несколькими наиболее часто используемыми сочетаниями специальных клавиш:
В данном примере нажатие F7 сообщает активному окну комбинацию Control+C, затем Alt+Tab, затем слово «pasted:» и завершает комбинацией Control+V.
В описании команды Send вы можете найти полный список символов, специальных клавиш и их сочетаний, используемых в программе.
Клики мышью: для того, чтобы сообщить окну клик мышью, в первую очередь необходимо определить координаты X и Y, куда вы собираетесь делать клик. Это можно определить с помощью утилит AutoScriptWriter и Window Spy, которые поставляются вместе с AutoHotkey.
Вот как это делается с помощью Window Spy: запустите Window Spy. Активируйте интересующее Вас окно. Наведите курсор мыши на искомую точку и посмотрите в окне Window Spy её координаты. Используйте эти координаты для создания эмуляции клика мыши. Например:
Примечание: координаты клика всегда считаются от левого верхнего угла активного окна. Окно при этом может находиться где угодно.
Для перемещения мыши без клика используйте команду MouseMove. Для перетаскивания или выделения мышью используйте команду MouseClickDrag.
Активация и манипулирование окнами
Для активации окна (чтобы сделать его поверх остальных окон), используйте команду WinActivate. Для определения, появилось ли искомое окно вообще, используйте команды IfWinExist или WinWait. В следующем примере мы проиллюстрируем эти команды:
Через точку с запятой даны построчные комментарии к скрипту. Всё, что написано после точки с запятой, скриптом не исполняется.
Если оно не найдено, запускается Блокнот, выполняется ожидание появления окна, и затем оно активируется. В нашем примере команда WinActivate обращена к последнему найденному окну, что позволяет нам не указывать конкретное название для каждого окна.
Вот наиболее часто используемые команды манипуляции окнами:
Используйте команду InputBox, если вы хотите, чтобы для подтверждения выбора пользователю необходимо было впечатать какое-либо слово в диалоговое окно. Команды FileSelectFile и FileSelectFolder используются для выбора пользователем файла или папки. Для более продвинутых конструкций, например для создания интерфейсной оболочки ввода данных, используйте команды семейства Gui.
Использование переменных и буфера обмена
За исключением локальных переменных в функциях, все переменные имеют глобальный характер, т.е. их содержимое может быть прочитано или изменено любой процедурой всего скрипта в целом. В дополнение к этому надо сказать, что переменные сами по себе специально не объявляются, они инициализируются автоматически.
Для демонстрации присвоения строки переменной, рассмотрим следующий пример:
Для сравнения состава переменных, состоящих из цифр и букв, сделаем следующее:
Обратите внимание, в строке выше второе упоминание переменной 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: Осуществляет поиск по реестру, перебирая построчно содержимое заданного ключа реестра.
Манипуляции с файлами и папками
Для добавления текста в какой-либо текстовый файл (или для создания нового текстового файла), используйте следующий механизм:
Для перезаписи имеющегося файла, используйте команду FileDelete перед использованием FileAppend. Например:
То есть фактически вначале мы удаляем старый текстовый файл, а затем с помощью команды FileAppend создаем на его месте новый, с нужным нам содержимым.
Несколько других наиболее часто используемых команд для манипуляций с файлами и папками:
Руководство для начинающих по использованию скриптов AutoHotkey
Что такое AutoHotkey
Скрипты AutoHotkey — отличный способ автоматизировать некоторые действия на компьютере, но на первый взгляд эта программа может показаться сложной. Не волнуйтесь — начать гораздо проще, чем кажется! Читайте дальше, чтобы увидеть как пользоваться AutoHotkey.
Программа AutoHotkey позволяет создавать макросы и скрипты выполняющие самые разнообразные действия, которые можно привязать к любым клавишам. Программа отлично подходит для автоматизации и ускорения действий. Может применяться при вводе текста, в играх, обычной работе в операционной системе.
Скрипты могут иметь графический интерфейс для показа информации и ввода настроек.
У AutoHotkey очень развитый скриптовый язык, но вам необязательно его изучать — вы можете воспользоваться готовыми скриптами.
Скачать AutoHotkey
Для загрузки перейдите на официальный сайт: https://www.autohotkey.com/download/
Там представлено несколько несколько версий, разберёмся в них:
Ветка AutoHotkey 2.0-a* является работоспособной, но в ней поменялся синтаксис языка по этой причине большинство готовых скриптов, которые вы можете найти в Интернете, в ней работать не будут.
Скачайте установщик, им проще пользоваться, чем портативной версией.
Установка AutoHotkey
Запускаем установочный файл:
Выберите «Express Installation».
Установка завершена, нажмите «Exit».
Как запустить AutoHotkey
Необычность AutoHotkey в том, что нет смысла запускать программу без скрипта — в этом случае будет показана только справка.
Порядок запуска AutoHotkey следующий:
1. Сохранение скрипта в файл с расширением .ahk
2. Запуск этого файла — в этом случае автоматически откроется AutoHotkey и выполнит скрипт
По этой причине предпочтительнее скачать установочный файл, а не портативную версию, поскольку для портативной версии придётся вручную настраивать ассоциацию с файлами .ahk.
Скрипты AutoHotkey
Теперь, когда вы настроили AutoHotkey, пришло время получить ваш первый скрипт. Некоторые сценарии AutoHotkey настолько короткие, что публикуются в сети в виде коротких фрагментов текста. Выберите текст сценария и скопируйте его.
Теперь запустите «Блокнот» и вставьте скрипт. Убедитесь, что вы скопировали все с самого начала и до конца.
Этот скрипт делает так, что при зажатой правой кнопки мыши колёсико начинает выполнять функцию кнопок Вперёд и Назад. Например, в веб-браузере таким образом вы можете вернуться на предыдущую страницу.
Некоторые сценарии содержат не только несколько строк; они часто предлагаются в виде файлов, а не вставляются на страницу. Щёлкните правой кнопкой мыши ссылку на файл AHK и выберите, чтобы сохранить его локально:
Пример скрипта, который показывает экранную клавиатуру и на этой клавиатуре показывает каждую клавишу, которую вы нажали: https://www.autohotkey.com/docs/scripts/KeyboardOnScreen.ahk
Запуск скрипта AutoHotkey
Когда скрипт запущен, вы должны увидеть маленький значок на панели задач. При наведении указателя мыши на этот значок появится всплывающая подсказка с названием сценария.
Если скрипт AutoHotkey не работает
Большинство сценариев работают сразу. Однако, если ваш скрипт не запускается и появляется сообщение об ошибке, вернитесь на страницу загрузки AutoHotkey и получите «AutoHotkey 1.0» (второй вариант). Удалите AutoHotkey, установите AutoHotkey 1.0 и попробуйте снова запустить скрипт.
Вы также можете попробовать сохранить скрипт с другой кодировкой символов.
Выход из скрипта
Закончив работу со сценарием, щёлкните правой кнопкой мыши его значок в системном трее и выберите «Exit».
Где скачать скрипты AutoHotkey
Скрипты AutoHotKey для CS:GO
Bhop (распрыжка) — это крутой скрипт для отработки упражнений, когда вы освоите его, подумайте о распрыжке с колесом прокрутки.
F11 для включения и отключения. Кнопка End дял полного отключения.
VAC вас НИКОГДА не обнаружит.
Autofire
Autofire не очень практичен для конкурентного игрового процесса, но с DM и Casual это интересно.
Они безопасны для VAC, но их не рекомендуется использовать в конкурентных состязаниях или на пользовательских серверах, их обнаруживает пользовательский античит.
Чтобы поставить скрипт на паузу нажмите F6.
Ultimate CS:GO Multiscript
Это НЕ чит, он не будет вводить или делать что-либо с CS:GO, он просто симулирует события мыши/клавиатуры.
Пролистните до Code: и разверните Spoiler:
Скрипт длинный, поэтому убедитесь, что полностью скопировали его.
AutoHotkey Beginner Tutorial by tidbit
Table of Contents
Before we begin our journey, let me give some advice. Throughout this tutorial you will see a lot of text and a lot of code. For optimal learning power, it is advised that you read the text and try the code. Then, study the code. You can copy and paste most examples on this page. If you get confused, try reading the section again.
a. Downloading and installing AutoHotkey
Since you’re viewing this documentation locally, you’ve probably already installed AutoHotkey and can skip to section b.
Before learning to use AutoHotkey (AHK), you will need to download it. After downloading it, you may possibly need to install it. But that depends on the version you want. For this guide we will use the Installer since it is easiest to set up.
For a video instruction, watch Install and Hello World on YouTube.
b. How to create a script
Once you have AutoHotkey installed, you will probably want it to do stuff. AutoHotkey is not magic, we all wish it was, but it is not. So we will need to tell it what to do. This process is called «Scripting».
So now that you have created a script, we need to add stuff into the file. For a list of all built-in commands, function and variables, see section 5.
Here is a very basic script containing a hotkey which types text using the Send command when the hotkey is pressed:
We will get more in-depth later on. Until then, here’s an explanation of the above code:
For a video instruction, watch Install and Hello World on YouTube.
c. You cannot merge commands
When you are making your code, you might have the urge to put several commands on the same line or inside of each other, don’t. In section 5 we’ll talk about why it doesn’t work as you might expect and what you can do instead.
d. How to find the help file on your computer
There are a few ways to do this, I’ll assume you have it installed to the default locations:
What is a hotstring? Hotstrings are mainly used to expand abbreviations as you type them (auto-replace), they can also be used to launch any scripted action. For example:
The difference between the two examples is that the hotkey will be triggered when you press Ctrl + J while the hotstring will convert your typed «ftw» into «Free the whales».
Note: There are exceptions, but those tend to cause confusion a lot of the time. So it won’t be covered in the tutorial, at least, not right now.
A hotstring has a pair of colons on each side of the text you want to trigger the text replacement. While the text to replace your typed text goes on the right of the second pair of colons.
Hotstrings, as mentioned above, can also launch scripted actions. That’s fancy talk for «do pretty much anything». Same with hotkeys.
A nice thing to know is that you can have many lines of code for each hotkey, hotstring, label, and a lot of other things we haven’t talked about yet.
a. Keys and their mysterious symbols
Symbol | Description |
---|---|
# | Win (Windows logo key) |
! | Alt |
^ | Ctrl |
+ | Shift |
& | An ampersand may be used between any two keys or mouse buttons to combine them into a custom hotkey. |
(For the full list of symbols, see the Hotkey page)
Additionally, for a list of all/most hotkey names that can be used on the left side of a hotkey’s double-colon, see List of Keys, Mouse Buttons, and Joystick Controls.
You can define a custom combination of two (and only two) keys (except joystick buttons) by using & between them. In the example below, you would hold down Numpad0 then press Numpad1 or Numpad2 to trigger one of the hotkeys:
But you are now wondering if hotstrings have any cool modifiers since hotkeys do. Yes, they do! Hotstring modifiers go between the first set of colons. For example:
Visit Hotkeys and Hotstrings for additional hotkey and hotstring modifiers, information and examples.
b. Window specific hotkeys/hotstrings
Sometime you might want a hotkey or hotstring to only work (or be disabled) in a certain window. To do this, you will need to use either of these fancy commands with a # in-front of them:
These special commands (technically called «directives») create context-sensitive hotkeys and hotstrings. Simply specify a window title. But in some cases you might want to specify criteria such as HWND, group or class. Those are a bit advanced and are covered more in-depth here: The WinTitle Parameter & the Last Found Window.
To turn off context sensitivity for subsequent hotkeys or hotstrings, specify any #IfWin directive but leave all of its parameters blank. For example:
When #IfWin directives are never used in a script, all hotkeys and hotstrings are enabled for all windows.
The #IfWin directives are positional: they affect all hotkeys and hotstrings physically beneath them in the script. They are also mutually exclusive; that is, only the most recent one will be in effect.
For more in-depth information and similar commands, check out the #IfWinActive page.
c. Multiple hotkeys/hotstrings per file
This, for some reason crosses some people’s minds. So I’ll set it clear: AutoHotkey has the ability to have as many hotkeys and hotstrings in one file as you want. Whether it’s 1, or 3253 (or more).
The above code is perfectly acceptable. Multiple hotkeys, multiple hotstrings. All in one big happy script file.
d. Examples
So now you decided that you want to send (type) keys to a program. We can do that. Use the Send command. This command literally sends keystrokes, to simulate typing or pressing of keys.
But before we get into things, we should talk about some common issues that people have.
Just like hotkeys, the Send command has special keys too. Lots and lots of them. Here are the four most common symbols:
The gigantic table on the Send page shows pretty much every special key built-in to AHK. For example:
Caution: This table does not apply to hotkeys. Meaning, you do not wrap Ctrl or Enter (or any other key) inside curly brackets when making a hotkey.
An example showing what shouldn’t be done to a hotkey:
A common issue lots of people have is, they assume that the curly brackets are put in the documentation pages just for fun. But in fact they are needed. It’s how AHK knows that means «exclamation point» and not «press Alt «. So please remember to check the table on the Send page and make sure you have your brackets in the right places. For example:
To hold down or release a key, enclose the key name in curly brackets and then use the word UP or DOWN. For example:
But now you are wondering «How can I make my really long Send commands readable?». Easy. Use what is known as a continuation section. Simply specify an opening parenthesis on a new line, then your content, finally a closing parenthesis on its own line. For more information, read about Continuation Sections.
Note: There are several different forms of Send. Each has their own special features. If one form of Send does not work for your needs, try another type of Send. Simply replace the command name «Send» with one of the following: SendRaw, SendInput, SendPlay, SendEvent. For more information on what each one does, read this.
a. Games
This is important: A lot of games, especially modern ones, have cheat prevention software. Things like GameGuard, Hackshield, PunkBuster and several others. Not only is bypassing these systems in violation of the games policies and could get you banned, they are complex to work around.
If a game has a cheat prevention system and your hotkeys, hotstrings and Send commands do not work, you are out of luck. However there are methods that can increase the chance of working in some games, but there is no magical «make it work in my game now. « button. So try ALL of these before giving up.
There are also known issues with DirectX. If you are having issues and you know the game uses DirectX, try the stuff described on the FAQ page. More DirectX issues may occur when using PixelSearch, PixelGetColor or ImageSearch. Colors might turn out black (0x000000) no matter the color you try to get. You should also try running the game in windowed mode, if possible. That fixes some DirectX issues.
There is no single solution to make AutoHotkey work in all programs. If everything you try fails, it may not be possible to use AutoHotkey for your needs.
There are some other advanced features as well, such as command line parameters and CLSID. If you want to learn more about that stuff, visit the Run page.
Here are a few more samples:
For more in-depth information and examples, check out the Run page.
AutoHotkey has two main types of things used by the scripter to create code: Commands and functions.
A list of all commands and built-in functions can be found here.
Commands
You can tell what a command is by looking at its syntax (the way it looks). Commands do not use parentheses around the parameters like functions do. So a command would look like this:
When using commands, you cannot squish other commands onto the same line as a previous command (exception: IfEqual). You cannot put commands inside the parameters of other commands. For example:
Functions
As stated above, functions are different because they use parentheses. A typical function looks like:
Functions have a few main differences:
A function usually return a value differently than a command does. Commands need an OutputVar parameter, functions do not. The most common way assigning the value of a function to a variable is like so:
This isn’t the only way, but the most common. You are using MyVar to store the return value of the function that is to the right of the := operator. See Functions for more details.
a. Code blocks
Code blocks are lines of code surrounded by little curly brackets ( < and >). They group a section of code together so that AutoHotkey knows it’s one big family and that it needs to stay together. They are most often used with functions and control flow statements such as If and Loop. Without them, only the first line in the block is called.
In the following code, both lines are run only if MyVar equals 5:
In the following code, the message box is only shown if MyVar equals 5. The script will always exit, even if MyVar is not 5:
This is perfectly fine since the if-statement only had one line of code associated with it. It’s exactly the same as above, but I outdented the second line so we know it’s separated from the if-statement:
Variables are like little post-it notes that hold some information. They can be used to store text, numbers, data from functions and commands or even mathematical equations. Without them, programming and scripting would be much more tedious.
Variables can be assigned a few ways. We’ll cover the most common forms. Please pay attention to the equal sign ( = ).
Legacy text assignment
This is the simplest form for a variable, a legacy assignment. Simply type in your text and done.
Legacy variable assignment
Same as above, but you are assigning a value of a variable to another variable.
Legacy mixed assignment
A combination of the two legacy assignments above.
Expression text assignment
Expression variable assignment
In expression mode, variables do not need percent signs.
Expression number assignment
Thanks to expressions, you can do math!
Expression mixed assignment
A combination of the three expression assignments above.
a. When to use percents
One of the most common issues with AutoHotkey involving variables is when to use the percent signs (%). Hopefully this will clear some confusion.
When to use percent signs:
When not to use percent signs:
b. Getting user input
Sometimes you want to have the user to choose the value of stuff. There are several ways of doing this, but the simplest way is InputBox. Here is a simple example on how to ask the user a couple of questions and doing some stuff with what was entered:
c. Other Examples?
Objects are a way of organizing your data for more efficient usage. Sometimes objects are referred to as arrays, but it’s important to note that all arrays are just objects. We call objects different things depending on what we are using them for, but all objects are the same.
An object is basically a collection of variables. The variable names are known as «Keys», and the contents of the variables are «Values».
When you hear people calling an object an array or indexed array, it usually means that all the keys are sequential numbers 1 and up. When you hear people calling an object an associative array, it means that the keys are either strings (text) or non-sequential numbers. Sometimes it’s a mix of both, and sequential numbers too!
There are no restrictions to what a key or value can be, and they can even be other arrays! When the values are arrays too, this is referred to as a nested array, and these will be explained later.
There are a number of reasons you might want to use an object for something. Some examples:
a. Creating Objects
There are a few ways to create an object, and the most common ones are listed below:
This will start you off with what is sometimes called an «indexed array». An indexed array is an object representing a list of items, numbered 1 and up. In this example, the value «one» is stored in object key 1 (aka index 1), and the value 17 is stored in object key 4 (aka index 4).
This is equivalent to the bracket syntax, but wrapped in a function.
This is equivalent to the brace syntax, but wrapped in a function.
It’s important to remember that every one of these definitions all create the same thing (objects), just with different keys.
b. Using Objects
There are many ways to use objects, including retrieving values, setting values, adding more values, and more.
To set values:
The same as above but with the dot notation.
To retrieve values:
This only lets you use literal strings for the keys. You cannot use variables in your keys with dot notation.
To add new keys and values:
To directly add a key and value, just set a key that doesn’t exist yet.
The same as above but with the dot notation.
Index is any integer key. This will shift ALL higher integer keys up by the number of values which were inserted, even if there are gaps (for example, only keys 1 and 100 exist, and you insert a value at key 50, it will shift 100 up to 101).
This «appends» the values to the end of the array MyObject. In other words, it inserts the values at the highest integer key plus one.
To remove keys and values:
This and the next methods below remove the key and the value. The previous value of MyObject[AnyKey] will be stored in RemovedValue.
Allows you to remove a range of numbered/integer or string keys between FirstKey and LastKey. The value it gives will be the number of keys that were removed, which is useful if you have a gap between your keys (e.g. you specify keys 1 through four, but key number 2 doesn’t exist, this will set NumberOfRemovedKeys to 3 as only three keys were there to be removed).
This removes the highest integer key, and returns the value. There are no keys higher than it to be affected.
We have reached the end of our journey, my good friend. I hope you have learned something. But before we go, here are some other things that I think you should know. Enjoy!
a. The mysterious square brackets
Throughout the documentation, you will see these two symbols ( [ and ] ) surrounding code in the yellow syntax box at the top of almost all pages. Anything inside of these brackets are OPTIONAL. Meaning the stuff inside can be left out if you don’t need them. When writing your code, it is very important to NOT type the square brackets in your code.
On the ControlGetText page you will see this:
So you could simply do this if you wanted:
Or add in some more details:
What if you wanted to use ExcludeTitle but not fill in WinText or WinTitle? Simple!
b. Finding your AHK version
Run this code to see your AHK version:
Or look for «AutoHotkey Help File» or «AutoHotkey.chm» in the start menu or your installation directory.
c. Trial and Error
Trial and Error is a very common and effective way of learning. Instead of asking for help on every little thing, sometimes spending some time alone (sometimes hours or days) and trying to get something to work will help you learn faster.
If you try something and it gives you an error, study that error. Then try to fix your code. Then try running it again. If you still get an error, modify your code some more. Keep trying and failing until your code fails no more. You will learn a lot this way by reading the documentation, reading errors and learning what works and what doesn’t. Try, fail, try, fail, try, try, try, fail, fail, succeed!
This is how a lot of «pros» have learned. But don’t be afraid to ask for help, we don’t bite (hard). Learning takes time, the «pros» you encounter did not learn to be masters in just a few hours or days.
d. Indentation
This stuff (indentation) is very important! Your code will run perfectly fine without it, but it will be a major headache for you and other to read your code. Small code (25 lines or less) will probably be fine to read without indentation, but it’ll soon get sloppy. It’s best you learn to indent ASAP. Indentation has no set style, but it’s best to keep everything consistent.
«What is indentation?» you ask? It’s simply spacing to break up your code so you can see what belongs to what. People usually use 3 or 4 spaces or 1 tab per «level».
See Wikipedia’s Indentation style page for various styles and examples. Choose what you like or learn to indent how you think it’s easiest to read.
e. Asking for Help
Before you ask, try doing some research yourself or try to code it yourself. If that did not yield results that satisfy you, read below.
If you don’t get an answer right away, wait at least 1 day (24 hours) before asking for more help. We love to help, but we also do this for free on our own time. We might be at work, sleeping, gaming, with family or just too busy to help.
And while you wait for help, you can try learning and doing it yourself. It’s a good feeling, making something yourself without help.
Синтаксис языка
Двойные кавычки («) имеют специальное назначение, только если они соотносятся с выражениями. Во всех же остальных случаях они трактуются как обычные символы. Также, при запуске какой либо программы или файла, операционная система как правило требует наличия кавычек в строке адреса, если там содержатся пробелы. Например:
Имена переменных всегда заключаются в значки процентов, за исключением случаев, которые в представленных примерах выделены жирным шрифтом:
Для вычисления количества прошедшего времени между двумя датами используйте команду EnvSub, как проиллюстрировано в примере из соответствующей статьи. Также, встроенная переменная A_Now содержит данные о текущем времени. И наконец, существуют ещё несколько встроенных переменных, работающих с датой/временем, как например команда FormatTime, использующаяся для создания строки даты/времени в произвольном формате.
Почему строки автозамены, команды Send и MouseClick не работают в некоторых играх?
Некоторые игры используют в своей работе только механизм DirectInput. Как следствие, такое приложение может игнорировать все эмуляции нажатий клавиш и кнопок мыши. Несмотря на то, что серьёзной работы по этому вопросу ещё не проводилось, было обнаружено, что для большинства игр увеличение параметра SetKeyDelay явилось эффективным для включения в работу команды Send. Попробуйте сделать так:
Также для обхода этой проблемы вы можете попробовать использовать другие программы для эмуляции нажатий клавиш и кнопок мыши, такие, как Journal Macro, QuicKeys, KeyGO, OnHand, и Toggle Keyboard.
Я использую несколько языковых раскладок на клавиатуре. Почему команда Send и строки автозамены иногда пропечатывают мне не те буквы?
Это происходит потому, что язык, на котором работает скрипт (английский) не совпадает с языковой раскладкой, выбранной вами для работы в конкретном приложении. Для синхронизации раскладок, вам нужно изменить «язык» для скриптов AutoHotkey. Сделать это можно вручную: простым двойным кликом на иконке скрипта в системном трее вызываем рабочее окно самого скрипта, далее меняем раскладку клавиатуры (обычно в Windows это LeftAlt+Shift), закрываем окно. Можно также воспользоваться следующим примером скрипта, автоматически меняющего языковую раскладку для скриптов AutoHotKey:
Дополнительная информация: как и любое другое приложение, каждый скрипт начинает работу с языком, установленным вами по умолчанию. Если эта установка не совпадает с языковой раскладкой, выбранной для приложения, куда вы «впечатываете» строки, скрипт может «перевести» их в нечто невообразимое.
Могу ли я управлять Winamp’ом, если его окно не является активным?
Смотрите статью «Управление Winamp’ом».
Как можно изменить надписи на кнопках, появляющихся в окошке MsgBox?
Смотрите пример в статье «Изменение надписей на кнопках в MsgBox».
Горячие клавиши, строки автозамены и переназначение клавиш
Четвёртая (XButton1) и пятая кнопка мыши (XButton2) также доступны для программы, при условии, что драйвера мыши позволяют Windows «увидеть» их сигналы. Если же сигналы от этих кнопок Windows не видит, а также в том случае, когда на мыши есть ещё какие-либо дополнительные кнопки, вы можете сконфигурировать драйвера мыши таким образом, чтобы при нажатии этих дополнительных кнопок в Windows посылались бы нажатия стандартных клавиатурных клавиш, а уже их использовать в своих скриптах. Например, если вы в драйверах мыши установили на её четвёртую кнопку посылание сигналов нажатий комбинации клавиш Control+F12, то в своих скриптах можете спокойно программировать на горячие клавиши ^F12:: все, что вам нужно.
Если всё-таки пятая и четвертая кнопки вашей мыши остаются невидимыми для Windows, вы можете попробовать не устанавливать «родные» мышиные драйвера, а использовать вместо них драйвера по умолчанию для мыши Windows. Это может помочь, однако в этом случае вы, само собой, будете лишены возможности использовать расширенные функции, которые были заложены в «фирменные» драйвера.
Как использовать символы и знаки пунктуации в качестве горячих клавиш?
Символы, которые выдает клавиатура напрямую, без дополнительного нажатия клавиши Shift, можно использовать как обычные клавиши, без всяких прочих условий, за исключением точки с запятой, которая прописывается как (`;::). Вот пример использования акцента в качестве горячей клавиши:
Как переназначить на клавиши или кнопки мыши другие символы/клавиши?
Смотрите статью о переназначении клавиш.
Можно ли сделать так, чтобы горячие клавиши или строки автозамены посылались исключительно для одной программы? Другими словами, во всех других приложениях эти клавиши работали бы как самые обычные клавиши, и только в нужной мне программе ими бы включались соответствующие скрипты?
Рассмотрим также и другой метод, но он работает только в том случае, если программа «CAD Editor» изначально сконфигурирована таким образом, что совершенно не реагирует на нажатие клавиши NumpadEnter. Префикс из тильды (
) превращает NumpadEnter в незаблокированную горячую клавишу (клавишу, которая работает как «горячая клавиша», но при этом всегда посылается активному окну). То есть запись вида
NumpadEnter позволяет использовать клавишу NumpadEnter как обычный NumpadEnter всё то время, пока она не запускает наш скрипт:
NumpadEnter:: IfWinNotActive, CAD Editor Return ; Если же окно нашей программы стало активным, выполняется следующее действие: Send, abc Return
Рассмотрим следующий пример:
Теперь сделаем так, чтобы Numpad0 работал как обычный Numpad0 до тех пор, пока он нам не понадобится для запуска нашей комбинации, описанной выше:
Существует ли способ, позволяющий использовать в своих целях «встроенные» в Windows сочетания клавиш, например такие, как Win+U (Utility Manager) и Win+R (Run)? Можно ли их изменить или отключить совсем?
Смотрите соответствующую статью о переназначении и запрещении горячих клавиш.
На моей клавиатуре есть специальная клавиша 000. Можно ли её использовать как горячую клавишу?
Да, вы можете её использовать. В нашем примере показано, как можно использовать клавишу 000, превратив её в знак равенства. В строке скрипта «Send, =» Вы можете заменить знак равенства на всё, что вам угодно. Примечание: пример доступен по ссылке, которая имеется в оригинале этой статьи.
Using the Program
Tip: If your browser supports it, you can download any code block (such as the one above) as a script file by clicking the button which appears in the top-right of the code block when you hover your mouse over it.
Table of Contents
Create a Script
There are a couple of common ways to create a script file:
Be sure to save the file as UTF-8 with BOM if it will contain non-ASCII characters. For details, see the FAQ.
See Scripting Language for details about how to write a script.
Edit a Script
To open a script for editing, right-click on the script file and select Edit Script. If the script is already running, you can use the Edit command or right-click the script’s tray icon and select Edit This Script. By default this will open Notepad, but that can be changed by writing to the registry as shown here. Of course, you can always open your text editor first and then open the script as you would any other text file.
After editing a script, you must run or reload the script for the changes to take effect. A running script can usually be reloaded via its tray menu.
Run a Script
With AutoHotkey installed, there are several ways to run a script:
Most scripts have an effect only while they are running. Use the tray menu or the ExitApp command to exit a script. Scripts are also forced to exit when Windows shuts down. To configure a script to start automatically after the user logs in, the easiest way is to place a shortcut to the script file in the Startup folder.
Scripts can also be compiled; that is, combined together with an AutoHotkey binary file to form a self-contained executable (.exe) file.
Tray Icon
By default, each script adds its own icon to the taskbar notification area (commonly known as the tray).
The tray icon usually looks like this (but the color or letter changes when the script is paused or suspended):
Right-click the tray icon to show the tray menu, which has the following options by default:
By default, double-clicking the tray icon shows the script’s main window.
The Menu command can be used to customise the tray icon and menu.
The #NoTrayIcon directive can be used to hide the tray icon.
Main Window
The script’s main window is usually hidden, but can be shown via the tray icon or one of the commands listed below to gain access to information useful for debugging the script. Items under the View menu control what the main window displays:
Known issue: Keyboard shortcuts for menu items do not work while the script is displaying a message box or other dialog.
The built-in variable A_ScriptHwnd contains the unique ID (HWND) of the script’s main window.
Closing this window with WinClose (even from another script) causes the script to exit, but most other methods just hide the window and leave the script running.
Minimizing the main window causes it to automatically be hidden. This is done to prevent any owned windows (such as GUI windows or certain dialog windows) from automatically being minimized, but also has the effect of hiding the main window’s taskbar button. To instead allow the main window to be minimized normally, override the default handling with OnMessage. For example:
Main Window Title
The title of the script’s main window is used by the #SingleInstance and Reload mechanisms to identify other instances of the same script. Changing the title prevents the script from being identified as such. The default title depends on how the script was loaded:
The following code illustrates how the default title could be determined by the script itself (but the actual title can be retrieved with WinGetTitle):
Embedded Scripts [v1.1.34+]
An embedded script can be specified on the command line or with #Include by writing an asterisk (*) followed by the resource name. For an integer ID, the resource name must be a hash sign (#) followed by a decimal number.
The program may automatically load script code from the following resources, if present in the file:
When the source of the main script is an embedded resource, the program acts in «compiled script» mode, with the exception that A_AhkPath always contains the path of the current executable file (the same as A_ScriptFullPath). For resources other than *#1, the resource specifier is included in the main window’s title to support #SingleInstance and Reload.
When referenced from code that came from an embedded resource, A_LineFile contains an asterisk (*) followed by the resource name.
Command Line Usage
See Passing Command Line Parameters to a Script for command line usage, including a list of command line switches which affect the program’s behavior.
Portability of AutoHotkey.exe
[AHK_L 51+]: Renaming AutoHotkey.exe also changes which script it runs by default, which can be an alternative to compiling a script for use on a computer without AutoHotkey installed. For instance, MyScript.exe automatically runs MyScript.ahk if a filename is not supplied, but is also capable of running other scripts.
Installer Options
To silently install AutoHotkey into the default directory (which is the same directory displayed by non-silent mode), pass the parameter /S to the installer. For example:
A directory other than the default may be specified via the /D parameter (in the absence of /S, this changes the default directory displayed by the installer). For example:
Version: If AutoHotkey was previously installed, the installer automatically detects which version of AutoHotkey.exe to set as the default. Otherwise, the default is Unicode 32-bit or Unicode 64-bit depending on whether the OS is 64-bit. To override which version of AutoHotkey.exe is set as the default, pass one of the following switches:
For example, the following installs silently and sets ANSI 32-bit as the default:
Uninstall: To silently uninstall AutoHotkey, pass the /Uninstall parameter to Installer.ahk. For example:
Note: Installer.ahk must be run as admin to work correctly.
Extract: Later versions of the installer include a link in the bottom-right corner to extract setup files without installing. If this function is present, the /E switch can be used to invoke it from the command line. For example:
Restart scripts [v1.1.19.02+] : In silent install/uninstall mode, running scripts are closed automatically, where necessary. Pass the /R switch to automatically reload these scripts using whichever EXE they were running on, without command line args. Setup will attempt to launch the scripts via Explorer, so they do not run as administrator if UAC is enabled.
Taskbar buttons [v1.1.08+] : On Windows 7 and later, taskbar buttons for multiple scripts are automatically grouped together or combined into one button by default. The Separate taskbar buttons option disables this by registering each AutoHotkey executable as a host app (IsHostApp).
[v1.1.24.02+]: For command-line installations, specify /IsHostApp or /IsHostApp=1 to enable the option and /IsHostApp=0 to disable it.
Run with UI Access [v1.1.24.02+]
If any these UIA files are present before installation, the installer will automatically update them even if the UI Access option is not enabled.
For command-line installations, specify /uiAccess or /uiAccess=1 to enable the option and /uiAccess=0 to disable it. By default, the installer will enable the option if UAC is enabled and the UI Access context menu option was present before installation.
[ Работает ] [Гайд][AHK] Учимся создавать скрипты с AutoHotKey (на примере BDO)
Статьи и гайды по Black Desert: Раздел со статьями для BDO не обязательно читерской тематики. |
[Гайд][AHK] Учимся создавать скрипты с AutoHotKey (на примере BDO)
Доброе время суток, друзья!
Сегодня я расскажу Вам об основах создания и использования скриптов, используя AutoHotKey! 🙂
В этой ветке много макросов на Bloody, однако лично мое мнение, что блуди не удобная штука. Ну тут каждому на свой вкус.
Далее по тексу саму программу и скриптовый язык AutoHotKey я буду называть AHK или АХК.
Создаем пустой скрипт.
После того как Вы внесли какой либо код в скрипт, сохраняем его и запускаем от имени администратора.
Давайте рассмотрим основные команды (те, которые я чаще всего использую).
Обратите внимание, что ПОЛНЫЙ синтаксис команд с примерами представлен на официальном сайте autohotkey.com
В АХК конец предыдущей команды обозначается концом прошлой команды, переносом на следующую строку, либо завершением <блока команд>. Я представляю насколько непонятно это выглядит, однако я думаю чуть дальше вы поймете.
В первую очередь я Вам советую в скрипт вписывать несколько строк, которые в случае Вашей ошибки\недоработки позволят отключать скрипт. Например, если Вы поставили нажиматься Alt+F4 каждые 0.1 секунд. Короче если вы не можете остановить скрипт мышкой, чтоб мы могли это сделать кнопкой.
Что это такое? При нажатии на F11 у нас будет выполнена команда pause, которая запаузит скрипт. При повторном нажатии скрипт продолжит работу с того места, где закончил. При нажатии F12 соответственно скрипт будет перезагружен совсем. 🙂 На заметку: если вы изменили код скрипта, сохранили, то при нажатии на f12 будет загружен уже измененный скрипт. Это удобно когда вы только создаете\отлаживаете скрипт.
Эту строку я советую тоже вставлять во все скрипты, где у Вас будут использоваться координаты. (ну например нажать мышкой на крестик в ворде 🙂 ). Дело в том, что в этом случае координаты будут смотреться не относительно вашего разрешения(монитора), а относительно текущего окна. Т.е. если у вас игра\ворд запущены не в полное окно, то вы можете их двигать куда угодно, координаты будут одинаковы.
Далее. Привязка действий к клавишам. Существует список кучи модификаторов. Я приведу основные:
При нажатии сочетания ALT и цифры 1 у нас выведется пустое окошечко.
Таким же образом привязываются абсолютно все действия.
Если у Вас больше одной команды, то я советую заключать их в <>.
Как это будет выглядеть?
В данном случае у нас будут появляться два окошечка последовательно. Но это лишь пример.
Далее рассмотрим одну из самых важных команд: Send, SendPlay, SendInput. Эти команды нужны нам, чтобы посылать какие-то тексты и\или кнопки в игру. Первая делает это чуть медленнее, однако работает всегда. Вторая и третьи(предпочтительна вторая) делают отправку мгновенно.
Важно! Если вы хотите послать отправку КНОПКИ, а не ТЕКСТА, то вы должны заключить кнопку в <>.
Пример: нам нужно отправить строку объявления в игровой чат мгновенно, чтоб оно не мешало нам фармить.
Все знаки пунктуации нужно заключать в <>.
Теперь при нажатии Ctrl+1 у нас отправится объява в чат, причем скорее всего мы даже не успеем заметить как открылся чат.
При нажатии Ctrl+2 мы гарантированно изменим чат на Общий, после чего напишется строка и остановится на «Цена:» но не отправится, там мы сможем ввести цену. Ну я надеюсь суть вы поняли 🙂
При нажатии на Пуск+1 у нас зажмется шифт на 2 секунды.
Теперь попробуем разобраться с мышкой.
При нажатии на Альт+NumPad0 у нас произойдет «клик» левой кнопкой по координатам 5 5.
При нажатии Альт+NumPad1 у нас произойдет клик правой кнопкой по 10 10, через секунду правая кнопка зажмется на полсекунды.
Как нам собирать эти координаты? Я пользуюсь двумя способами. Первый: запускаем любой скрипт, в трее нажимаем правой кнопкой, потом Window Spy. Откроется окошечко
Нас интересует строка In Active Window:
Второй: использовать код, который будет показывать нам координаты при нажатии на кнопочку.
Разберемся с циклами. То есть со случаями, когда нам нужно одно и то же действие повторить много раз.
Например, нам нужно кормить кота каждые пять минут.
после ; мы можем писать комментарии.
В случае, когда нам нужно повторить действие определенное количество раз, просто после Loop, ставим цифру сколько раз:
У нас отправиться 10 нажатий
Ну вот наверное и всё, из основного 🙂 Теперь перед Вами всё ограничено лишь воображением.
Я прошу Вас задавать вопросы, если появятся, а также сказать, надо ли что-то еще добавить в гайд? 🙂
AutoHotkey: как пользоваться программой
Использование горячих клавиш — отличный способ повысить свою продуктивность и скорость работы на компьютере. Автоматизируя повседневные задачи, вы станете настоящим профи и сможете выполнять за день гораздо больше дел, чем планировали.
Утилита AutoHotkey предоставляет настолько много возможностей, что подойдет практически любому пользователю.
Полный список возможностей:
В этой статье приведены наиболее полезные скрипты, которыми можно начать пользоваться сразу после установки программы, а также основные принципы работы с утилитой для создания собственных сценариев.
Установка
Будь осторожны при загрузке утилиты с неизвестных ресурсов, особенно с тех, которые предлагают скачать AutoHotkey на русском языке. Так можно подхватить вирусы. По умолчанию она распространяется только на одном языке — английском. А список доступных переводов отображен на официальной страничке в разделе «Documentation» (Документация).
Итак, вы установили приложение, которое управляет исполнением скриптов, написанных на языке AutoHotkey.
Для удобного написания собственных сценариев предлагаю установить бесплатный текстовый редактор Notepad++ с подсветкой синтаксиса. Однако можно воспользоваться обычным Блокнотом Windows и просто сохранить файл с расширением AHK, результат от этого не изменится.
Теперь, когда есть программа для обработки скриптов, загрузите готовые коды, разработанные продвинутыми пользователями для автоматизации задач разного рода.
Скорее всего, вы захотите, чтобы эти скрипты запускались во время включения компьютера. Для этого скопируйте и вставьте файлы в папку Startup (комбинация Win + R и shell:startup).
Помните, что скрипты не будут работать, если их не запустить.
Отключение Num Lock, Scroll Lock и Caps Lock
Три кнопки, предназначенные для фиксации определенных режимов, в настоящее время утратили свое значение и практически не используются в повседневной работе. Возможно для ввода цифр, вы иногда нажимаете «Num Lock», а «Caps Lock» — разве что случайно и, скорее всего, вообще не знаете, для чего нужен «Scroll Lock». Чтобы установить для них режим по умолчанию, напишем такой скрипт:
В результате «Num Lock» будет всегда включен (если понадобится отключить, просто измените соответствующую строку кода либо удалите ее), а «Caps Lock» и «Scroll Lock» – отключены.
Переназначение Caps Lock
Теперь, когда «Caps Lock» отключен, его можно использовать для других целей. К примеру, сделать дополнительную «Shift» при помощи такого коротенького скрипта:
При желании можно назначить для нее функции другой кнопки (например, «Windows»).
Вставка специальных символов
Хотя на клавиатуре присутствуют некоторые символы, такие как «@» или «№», существует множество других, набирать которые довольно утомительно, в особенности если приходится иметь с ними дело каждый день. Написав всего одну строку кода AHK, вы сможете легко вставлять их без поиска кодов с «Alt» или копирования с интернет-ресурсов.
Используйте шаблон кода, представленный ниже, чтобы назначать горячие клавиши для нужных вам символов. Слева находится комбинация, сам символ заключен в фигурные скобки. К примеру, чтобы при нажатии сочетания клавиш «Alt» + «Й» выводился символ торговой марки, понадобится такой код:
Список обозначений AutoHotkey:
Автоматический поиск в Гугл
Чтобы автоматически запустить браузер по умолчанию и искать в Google выделенный текст при нажатии «Ctrl» + «Shift» + «С», понадобится написать следующее:
Это избавит от необходимости постоянного копирования и вставки в поле поиска.
Запуск любого приложения
Сценарий для запуска очень прост. В качестве примера приведем скрипт для запуска браузера Firefox при нажатии «Windows» + «Ф»:
Обратите внимание, что для сочетаний клавиш используются символы языка, выбранного в системе по умолчанию.
Написание собственных скриптов
Одна из основных функций Autohotkey – автозамена текста. Она позволяет задать сокращение символов для вывода полного текста. Например, если вам приходится каждый день отправлять по несколько одинаковых писем, вы можете ускорить этот процесс, создав для них единый шаблон.
Просто напечатайте два двоеточия, затем требуемое сочетание символов. Добавив еще два двоеточия, напечатайте полную фразу. Например, чтобы автоматически набирать адрес электронной почты, используйте такой сценарий:
Запустив сценарий, вы сможете в любом приложении Windows автоматически выводить адрес электронной почты после набора на клавиатуре «@@» и пробела, точки или запятой.
Функция для создания шаблона электронного письма:
При нажатии «Ctrl» + «Alt» + «С», автоматически появится весь текст.
Вторая основная функция AutoHotkey — переназначение кнопок, которыми вы не пользуетесь. Возможно, вы захотите, чтобы кнопка «Insert» выполняла функцию копирования, тогда вам понадобится следующий код:
Утилита AutoHotkey предоставляет неограниченные возможности для настройки системы согласно именно вашим предпочтениям. Необязательно писать длинные и сложные скрипты – для автоматизации повседневной работы хватит несколько простых и коротких сценариев.
Краткое руководство по AutoHotkey для начинающих
Изучение сочетаний клавиш для вашей системы и программного обеспечения меняет пользовательский опыт. В большинстве случаев это делает вас более продуктивным и способным достичь большего за меньшее время. Другие ярлыки направлены на улучшение качества жизни.
AutoHotkey развивает эту идею на шаг вперед и позволяет создавать собственные ярлыки практически для любой задачи, которую вы выполняете на своем компьютере. AutoHotkey вызывает привыкание, когда вы становитесь опытным. а пока давайте изучим основы этого руководства для начинающих.
Что может делать AutoHotkey?
AutoHotkey — это язык сценариев, который позволяет создавать макросы и сценарии, обычно запускаемые с помощью горячих клавиш. Примеры общего использования AutoHotkey:
Как установить AutoHotkey в Windows
AutoHotkey с открытым исходным кодом и доступен для Windows. Чтобы установить AutoHotkey, зайдите на официальный веб-сайт AutoHotkey и нажмите «Загрузить». На следующем экране выберите Download AutoHotkey Installer, и загрузка должна начаться автоматически.
Как использовать AutoHotkey
После установки найдите AutoHotkey в меню « Пуск» и откройте его. Вы увидите справочный документ, который AutoHotkey имеет вместо традиционного графического интерфейса. Самый простой способ использовать AutoHotkey — это использовать сценарии, уже созданные другими. Этот скрипт преобразует «кстати» в «кстати» каждый раз, когда вы его набираете.
Скачать: by.ahk [Больше не доступно]
Довольно круто, но, возможно, не так практично. Как насчет того, что вы можете использовать каждый день?
Попробуйте это мгновенный убийца монитора
AutoHotkey также может отправлять системные команды. Если вы целый день работаете за компьютером, возможно, вы не будете активно его использовать, но не захотите его выключать. Этот скрипт мгновенно обрежет сигнал на экране, а не будет ждать, пока он истечет, или заставка сработает.
Загрузить: monitor_sleep.ahk [Больше не доступно]
Создать скрипт AutoHotkey с нуля
Наконец, часть ? Q =% clipboard% — это команда для добавления URL с содержимым буфера обмена Windows.
Сохраните и запустите свой первый скрипт
Чтобы проверить это, скопируйте любой фрагмент текста, а затем Win + S.
Как редактировать скрипты AutoHotkey
Автоматизируйте повторяющиеся задачи с помощью AutoHotkey
Умение создавать собственные сценарии AutoHotkey также является отличным навыком, хотя стоит проверить Windows Ultimate Guide чтобы узнать, существует ли уже созданный вами ярлык!
Краткое руководство по AutoHotkey для начинающих
Изучение сочетаний клавиш для вашей системы и программного обеспечения меняет пользовательский опыт. В большинстве случаев это делает вас более продуктивным и способным достичь большего за меньшее время. Другие ярлыки направлены на улучшение качества жизни.
AutoHotkey развивает эту идею на один шаг вперед и позволяет создавать собственные ярлыки практически для любой задачи, которую вы выполняете на своем компьютере. AutoHotkey вызывает привыкание, когда вы становитесь опытным. но сейчас давайте изучим основы этого руководства для начинающих.
Что может делать AutoHotkey?
AutoHotkey — это язык сценариев, который позволяет создавать макросы и сценарии, обычно запускаемые с помощью горячих клавиш. Примеры общего использования AutoHotkey:
Как установить AutoHotkey в Windows
AutoHotkey с открытым исходным кодом и доступен для Windows. Чтобы установить AutoHotkey, зайдите на официальный веб-сайт AutoHotkey и нажмите «Загрузить». На следующем экране выберите Скачать установщик AutoHotkey и загрузка должна начаться автоматически.
Установка с настройки по умолчанию Рекомендовано. Но если вы используете 32-битную систему, используйте Выборочная установка Возможность установить правильную версию. Существует также версия для Набор символов ANSI, Это не то, что вам нужно, хотя некоторые старые скрипты полагаются на это.
Как использовать AutoHotkey
После установки найдите AutoHotkey в Начните меню и откройте его. Вы увидите справочный документ, который AutoHotkey имеет вместо традиционного графического интерфейса. Самый простой способ использовать AutoHotkey — это использовать сценарии, уже созданные другими. Этот скрипт преобразует «кстати» в «кстати» каждый раз, когда вы его набираете.
Скачать: кстати.
Это изображение показывает, что содержит скрипт. Дважды щелкните скрипт, чтобы запустить его, затем попробуйте, открыв любой текстовый редактор или окно браузера и набрав кстати,
Довольно круто, но, возможно, не так практично. Как насчет того, что вы можете использовать каждый день?
Попробуйте это мгновенный убийца монитора
AutoHotkey также может отправлять системные команды. Если вы целый день работаете за компьютером, возможно, вы не будете активно его использовать, но не хотите его выключать. Этот скрипт мгновенно обрежет сигнал на экране, а не будет ждать, пока он истечет, или заставка сработает.
Скачать: monitor_sleep.ahk
После загрузки откройте скрипт и нажмите F1, Разбудите его снова, перемещая мышь или нажимая любую клавишу на клавиатуре. AutoHotkey может управлять многими элементами вашей системы аналогично этому, включая отправку команд выключения, открытия пользовательских проводников Windows и даже команд в командной строке.
Создать скрипт AutoHotkey с нуля
До сих пор вы использовали сценарии других людей. Теперь давайте создадим простой эскиз с нуля, который возьмет все, что есть в нашем буфере обмена, и выполнит поиск в нем с помощью Duck Duck Go. Щелкните правой кнопкой мыши на рабочем столе Windows и выберите New> AutoHotkey Script, Кроме того, вы можете использовать любой текстовый редактор или IDE на ваш выбор
Текстовые редакторы против IDE: какой из них лучше для программистов?
Текстовые редакторы против IDE: какой из них лучше для программистов?
Выбор между расширенной IDE и более простым текстовым редактором может быть трудным. Мы предлагаем некоторую информацию, чтобы помочь вам принять это решение.
Прочитайте больше
и введите следующее:
#s ссылается на ярлык для запуска сценария. Символ хеша относится к Ключ Windows, означающий, что Win + S наш выбранный ярлык. Этот ярлык зарезервирован для функции поиска Windows 10. В этом случае мы переопределяем его, то есть поиск DuckDuckGo произойдет на его месте. Если вы используете ярлык поиска Windows, замените его другой буквой.
Наконец, ? Д =% буфер% part — это команда для добавления URL с содержимым буфера обмена Windows.
Сохраните и запустите свой первый скрипт
Сохраните файл в Файл> Сохранить как, назвав свой файл, и присвоив ему АХК расширение. После сохранения перейдите к своему файлу и откройте его. Может показаться, что ничего не произошло, но сценарий теперь работает в фоновом режиме. Чтобы проверить, запущен ли он, посмотрите в системном трее в правом нижнем углу экрана.
Чтобы проверить это, скопируйте любой фрагмент текста, а затем Win + S,
Неплохая экономия времени! Эта программа будет работать в фоновом режиме, пока вы не закроете ее или не выйдете из системы. Чтобы остановить скрипт, щелкните правой кнопкой мыши его значок в системном трее и выберите Выход, Либо, если вы хотите временно отключить сценарий, выберите Приостановить горячие клавиши, Сценарий останется открытым, но неактивным, пока не будет возобновлен.
Как редактировать скрипты AutoHotkey
Допустим, вы решили переключить поиск на YouTube. Чтобы отредактировать скрипт AutoHotkey, щелкните его правой кнопкой мыши и выберите Редактировать скрипт, Это откроет скрипт в вашем текстовом редакторе по умолчанию. URL для поиска на YouTube немного отличается.
Сохраните скрипт. Вы можете использовать этот скрипт сразу, не закрывая и не открывая заново скрипт. Вместо этого щелкните правой кнопкой мыши значок в системном трее и выберите Перезагрузить этот скрипт, Скопируйте что-нибудь в буфер обмена и попробуйте!
Это может быть просто самый быстрый из возможных способов поиска на YouTube, который демонстрирует некоторые из лучших трюков с URL-адресами YouTube.
10 хитростей URL YouTube, о которых вы должны знать
10 хитростей URL YouTube, о которых вы должны знать
Любите YouTube? Вы можете сделать это еще лучше с помощью этих классных трюков с URL-адресами YouTube, которые позволяют загружать видео, создавать GIF-файлы и многое другое.
Прочитайте больше
!
Автоматизируйте ваши повторяющиеся задачи с помощью AutoHotkey
AutoHotkey способен на многое, и сказать, что этот урок едва царапает поверхность, было бы преуменьшением. В прошлом мы рассмотрели много важных скриптов AutoHotkey, и есть много других, которые могут сделать вашу жизнь проще.
Умение создавать собственные сценарии AutoHotkey также является отличным навыком, хотя стоит проверить руководство по сочетанию клавиш Windows Ultimate.
Сочетания клавиш Windows 101: полное руководство
Сочетания клавиш Windows 101: полное руководство
Сочетания клавиш могут сэкономить часы времени. Освойте универсальные сочетания клавиш Windows, приемы клавиатуры для конкретных программ и несколько других советов, чтобы ускорить вашу работу.
Прочитайте больше
чтобы увидеть, если ярлык, который вы хотите сделать, уже существует!
Узнайте больше о: AutoHotkey, компьютерная автоматизация, сочетания клавиш.
Как найти идеальное резюме для вас на Canva
Для запуска программы или документа в развёрнутом, свёрнутом, или скрытом окне, используйте параметры «max», «min» или «hide» соответственно:
Мы также можем заставить программу использовать конкретную папку как свою рабочую директорию, например:
Так, комбинация клавиш Win+C запускает окно командной строки в папке C:\My Documents. Переменная %comspec%, с помощью которой мы в нашем примере вызываем окно командной строки, напрямую работает с исполняющим файлом cmd.exe, который в системе как правило находится по адресу C:\Windows\system32\cmd.exe.
Для задания параметров, добавляйте их сразу же за именем программы или документа, как показано в этих примерах:
Во втором и третьем примерах, параметры, содержащие пробелы, заключаются в кавычки. Это делается из соображений безопасности, для предупреждения возникновения возможных проблем. А вот скажем рабочая директория, даже содержащая в своем имени пробелы, в кавычках не нуждается, как проиллюстрировано в нашем первом примере.
Также в программе реализована поддержка специальных слов, известных как «системные глаголы» (system verbs). В первом примере мы открываем окошко свойств указанного файла, второй пример иллюстрирует печать указанного документа:
Команда RunWait устанавливает значение встроенной переменной ErrorLevel, записывая в нее код возврата программы, которая была запущена. Например, следующий скрипт отобразит ненулевой код ошибки, который возвратит командный интерпретатор, сигнализируя о проблеме:
Общий обзор программы и краткое обучение
Это короткое вступление поможет вам начать создавать свои собственные макросы и комбинации горячих клавиш.
Туториал содержит
Создание скрипта
Создание нового скрипта:
Создайте в Блокноте или любом другом текстовом редакторе текстовый файл следующего содержания:
Примечание: программа допускает использование нескольких скриптов одновременно. При этом каждый из них будет отображаться со своей собственной иконкой в трее. Чтобы выставить свою собственую иконку в замен дефолтной, добавьте в скрипт следующую строчку:
Само-собой, адрес к иконке прописываем собственный.
Запуск программы или документа
Для запуска программы, файла, документа, ярлыка используется команда «Run», например:
Оба примера, описанные выше, являются однострочными, т.к. содержат всего одну команду. Для того же, чтобы запустить нажатием клавиш несколько команд, пишем на первой строке наши командные клавиши, далее ниже сами команды, а последней строчкой пишем Return. Например:
Если программа или документ не являются интегрированными в систему Windows, нам будет необходимо указывать полный путь к файлу, который мы собираемся запустить, например:
В вышеприведенном примере папка %ProgramFiles% является системной, поэтому конретный путь к ней можно не прописывать. Такой вариант скрипта, по сравнению с вариантом записи C:\Program Files, является более универсальным, т.к. на другом компьютере ProgramFiles может находиться например на диске D:\.
Если вам нужно, чтобы скрипт подождал, пока закроется какая-либо программа или файл, и только потом продолжил свою работу дальше, используйте вместо команды Run команду RunWait. В следующем примере, команда MsgBox не запускается до тех пор, пока не закроется Блокнот:
Эмуляция нажатий клавиш и кликов мышью
Нажатия клавиш как правило посылаются в активное в данный момент окно и для этого программой используется команда Send. В примере ниже, сочетание клавиш Win+S запускает последовательность нажатия клавиш. Обратите внимание, что окно, в которое вы «печатаете», должно быть активным.
В примере, описанном выше, все символы печатаются точно так, как прописаны в скрипте, за исключением
В следующем примере мы проиллюстрируем методы работы с несколькими наиболее часто используемыми сочетаниями специальных клавиш:
В данном примере нажатие F7 сообщает активному окну комбинацию Control+C, затем Alt+Tab, затем слово «pasted:» и завершает комбинацией Control+V.
В описании команды Send вы можете найти полный список символов, специальных клавиш и их сочетаний, используемых в программе.
Клики мышью: для того, чтобы сообщить окну клик мышью, в первую очередь необходимо определить координаты X и Y, куда вы собираетесь делать клик. Это можно определить с помощью утилит AutoScriptWriter и Window Spy, которые поставляются вместе с AutoHotkey.
Вот как это делается с помощью Window Spy: запустите Window Spy. Активируйте интересующее Вас окно. Наведите курсор мыши на искомую точку и посмотрите в окне Window Spy её координаты. Используйте эти координаты для создания эмуляции клика мыши. Например:
Примечание: координаты клика всегда считаются от левого верхнего угла активного окна. Окно при этом может находиться где угодно.
Для перемещения мыши без клика используйте команду MouseMove. Для перетаскивания или выделения мышью используйте команду MouseClickDrag.
Активация и манипулирование окнами
Для активации окна (чтобы сделать его поверх остальных окон), используйте команду WinActivate. Для определения, появилось ли искомое окно вообще, используйте команды IfWinExist или WinWait. В следующем примере мы проиллюстрируем эти команды:
Через точку с запятой даны построчные комментарии к скрипту. Всё, что написано после точки с запятой, скриптом не исполняется.
Если оно не найдено, запускается Блокнот, выполняется ожидание появления окна, и затем оно активируется. В нашем примере команда WinActivate обращена к последнему найденному окну, что позволяет нам не указывать конкретное название для каждого окна.
Вот наиболее часто используемые команды манипуляции окнами:
Используйте команду InputBox, если вы хотите, чтобы для подтверждения выбора пользователю необходимо было впечатать какое-либо слово в диалоговое окно. Команды FileSelectFile и FileSelectFolder используются для выбора пользователем файла или папки. Для более продвинутых конструкций, например для создания интерфейсной оболочки ввода данных, используйте команды семейства Gui.
Использование переменных и буфера обмена
За исключением локальных переменных в функциях, все переменные имеют глобальный характер, т.е. их содержимое может быть прочитано или изменено любой процедурой всего скрипта в целом. В дополнение к этому надо сказать, что переменные сами по себе специально не объявляются, они инициализируются автоматически.
Для демонстрации присвоения строки переменной, рассмотрим следующий пример:
Для сравнения состава переменных, состоящих из цифр и букв, сделаем следующее:
Обратите внимание, в строке выше второе упоминание переменной 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: Осуществляет поиск по реестру, перебирая построчно содержимое заданного ключа реестра.
Манипуляции с файлами и папками
Для добавления текста в какой-либо текстовый файл (или для создания нового текстового файла), используйте следующий механизм:
Для перезаписи имеющегося файла, используйте команду FileDelete перед использованием FileAppend. Например:
То есть фактически вначале мы удаляем старый текстовый файл, а затем с помощью команды FileAppend создаем на его месте новый, с нужным нам содержимым.
Несколько других наиболее часто используемых команд для манипуляций с файлами и папками:
Scripts
Table of Contents
Introduction
Each script is a plain text file containing lines to be executed by the program (AutoHotkey.exe). A script may also contain hotkeys and hotstrings, or even consist entirely of them. However, in the absence of hotkeys and hotstrings, a script will perform its commands sequentially from top to bottom the moment it is launched.
The program loads the script into memory line by line, and each line may be up to 16,383 characters long. During loading, the script is optimized and validated. Any syntax errors will be displayed, and they must be corrected before the script can run.
The Top of the Script (the Auto-execute Section)
After the script has been loaded, it begins executing at the top line, continuing until a Return, Exit, hotkey/hotstring label, or the physical end of the script is encountered (whichever comes first). This top portion of the script is referred to as the auto-execute section.
Note: While the script’s first hotkey/hotstring label has the same effect as return, other hotkeys and labels do not.
If the script is not persistent, it will terminate after the auto-execute section has completed. Otherwise, it will stay running in an idle state, responding to events such as hotkeys, hotstrings, GUI events, custom menu items, and timers. A script is automatically persistent if it contains hotkeys, hotstrings, OnMessage() or GUI, and in a few other cases. The #Persistent directive can also be used to explicitly make the script persistent.
If the auto-execute section takes a long time to complete (or never completes), the default values for the above settings will be put into effect after 100 milliseconds. When the auto-execute section finally completes (if ever), the defaults are updated again to be those that were in effect at the end of the auto-execute section. Thus, it’s usually best to make any desired changes to the defaults at the top of scripts that contain hotkeys, hotstrings, timers, or custom menu items. Also note that each thread retains its own collection of the above settings. Changes made to those settings will not affect other threads.
Splitting a Long Line into a Series of Shorter Ones
Long lines can be divided up into a collection of smaller ones to improve readability and maintainability. This does not reduce the script’s execution speed because such lines are merged in memory the moment the script launches.
Similarly, the following lines would get merged into a single line because the last two start with «and» or «or»:
The ternary operator is also a good candidate:
Although the indentation used in the examples above is optional, it might improve clarity by indicating which lines belong to ones above them. Also, it is not necessary to include extra spaces for lines starting with the words «AND» and «OR»; the program does this automatically. Finally, blank lines or comments may be added between or at the end of any of the lines in the above examples.
Method #2: This method should be used to merge a large number of lines or when the lines are not suitable for Method #1. Although this method is especially useful for auto-replace hotstrings, it can also be used with any command or expression. For example:
In the examples above, a series of lines is bounded at the top and bottom by a pair of parentheses. This is known as a continuation section. Notice that the bottom line contains FileAppend’s last parameter after the closing parenthesis. This practice is optional; it is done in cases like this so that the comma will be seen as a parameter-delimiter rather than a literal comma.
Known limitation: If the Join string ends with a colon, it must not be the last option on the line. For example, (Join: is treated as the label «(Join» and (LTrim Join: is unsupported, but (Join: C is okay.
RTrim0 (RTrim followed by a zero): Turns off the omission of spaces and tabs from the end of each line.
Comments (or Comment or Com or C) [v1.0.45.03+] : Allows semicolon comments inside the continuation section (but not /*..*/ ). Such comments (along with any spaces and tabs to their left) are entirely omitted from the joined result rather than being treated as literal text. Each comment can appear to the right of a line or on a new line by itself.
% (percent sign): Treats percent signs as literal rather than as variable references. This avoids the need to escape each percent sign to make it literal. This option is not needed in places where percent signs are already literal, such as auto-replace hotstrings.
, (comma): Treats commas as delimiters rather than as literal commas. This rarely-used option is necessary only for the commas between command parameters because in function calls, the type of comma does not matter. Also, this option transforms only those commas that actually delimit parameters. In other words, once the command’s final parameter is reached (or there are no parameters), subsequent commas are treated as literal commas regardless of this option.
` (accent): Treats each backtick character literally rather than as an escape character. This also prevents commas and percent signs from being explicitly and individually escaped. In addition, it prevents the translation of any explicitly specified escape sequences such as `r and `t.
) [v1.1.01+] : If a closing parenthesis appears in the continuation section’s options (except as a parameter of the Join option), the line is reinterpreted as an expression instead of the beginning of a continuation section. This allows expressions like (x.y)[z]() to work without the need to escape the opening parenthesis.
Escape sequences such as `n (linefeed) and `t (tab) are supported inside the continuation section except when the accent (`) option has been specified.
When the comment option is absent, semicolon and /*..*/ comments are not supported within the interior of a continuation section because they are seen as literal text. However, comments can be included on the bottom and top lines of the section. For example:
As a consequence of the above, semicolons never need to be escaped within a continuation section.
A continuation section cannot produce a line whose total length is greater than 16,383 characters (if it tries, the program will alert you the moment the script is launched). One way to work around this is to do a series of concatenations into a variable. For example:
A continuation section can be immediately followed by a line containing the open-parenthesis of another continuation section. This allows the options mentioned above to be varied during the course of building a single line.
The piecemeal construction of a continuation section by means of #Include is not supported.
Convert a Script to an EXE (Ahk2Exe)
A script compiler (courtesy of fincs, with additions by TAC109) is included with the program.
Once a script is compiled, it becomes a standalone executable; that is, AutoHotkey.exe is not required in order to run the script. The compilation process creates an executable file which contains the following: the AutoHotkey interpreter, the script, any files it includes, and any files it has incorporated via the FileInstall command. [v1.1.33+]: Additional files can be included using compiler directives.
Ahk2Exe can be used in the following ways:
Command Line: The compiler can be run from the command line by using the parameters shown below. If any command line parameters are used, the script is compiled immediately unless /gui is used. All parameters are optional, except that there must be one /gui or /in parameter.
The compiler’s source code and newer versions can be found at GitHub.
Base Executable File
Script Compiler Directives
[v1.1.33+]: Script compiler directives allow the user to specify details of how a script is to be compiled. Some of the features are:
Compressing Compiled Scripts
MPRESS official website (downloads and information): http://www.matcode.com/mpress.htm
MPRESS mirror: https://www.autohotkey.com/mpress/
UPX official website (downloads and information): https://upx.github.io/
Note: While compressing the script executable prevents casual inspection of the script’s source code using a plain text editor like Notepad or a PE resource editor, it does not prevent the source code from being extracted by tools dedicated to that purpose.
Background Information
The base file search algorithm runs for a short amount of time when Ahk2Exe starts, and works as follows:
A version of the AutoHotkey interpreter is also needed (as a utility) for a successful compile, and one is selected using a similar algorithm. In most cases the version of the interpreter used will match the version of the base file selected by the user for the compile.
Passing Command Line Parameters to a Script
Scripts support command line parameters. The format is:
And for compiled scripts, the format is:
Switches: Zero or more of the following:
Switch | Meaning | Works compiled? |
---|---|---|
/f or /force | Launch unconditionally, skipping any warning dialogs. This has the same effect as #SingleInstance Off. | Yes |
/r or /restart | Indicate that the script is being restarted and should attempt to close a previous instance of the script (this is also used by the Reload command, internally). | Yes |
/ErrorStdOut /ErrorStdOut=Encoding | Yes | |
/Debug | [AHK_L 11+]: Connect to a debugging client. For more details, see Interactive Debugging. | No |
/CPn |