Как написать скрипт AutoHotkey

AutoHotkey - фантастическая, но сложная программа. Первоначально он был предназначен для повторной привязки пользовательских горячих клавиш к различным действиям, но теперь это полный пакет автоматизации Windows.

AHK не особенно сложно изучить для новых пользователей, поскольку общая концепция довольно проста, но это полноценный, полный по Тьюрингу язык программирования. Вам будет намного проще освоить синтаксис, если вы имеете опыт программирования или знакомы с концепциями.

Установка и использование AutoHotkey

Процесс установки AutoHotkey прост. Скачайте установщик с официального сайта и запустите. Выберите «Экспресс-установка». После установки программного обеспечения вы можете щелкнуть правой кнопкой мыши в любом месте и выбрать «Создать»> «Сценарий AutoHotkey», чтобы создать новый сценарий.

Скрипты AHK - это текстовые файлы с .ahk расширением. Если вы щелкнете по ним правой кнопкой мыши, вы получите несколько вариантов:

  • «Выполнить сценарий» загрузит ваш сценарий со средой выполнения AHK.
  • «Compile Script» свяжет его с исполняемым файлом AHK, чтобы создать EXE-файл, который вы можете запустить.
  • «Редактировать сценарий» откроет ваш сценарий в текстовом редакторе по умолчанию. Вы можете использовать Блокнот для написания сценариев AHK, но мы рекомендуем использовать SciTE4AutoHotkey, редактор для AHK, который поддерживает подсветку синтаксиса и отладку.

Во время выполнения сценария - будь то EXE или нет - вы обнаружите, что он работает в фоновом режиме в области уведомлений Windows, также известной как панель задач. Найдите зеленый значок с буквой «H».

Чтобы выйти, приостановить, перезагрузить или отредактировать сценарий, щелкните значок уведомления правой кнопкой мыши и выберите соответствующий параметр. Сценарии будут продолжать работать в фоновом режиме, пока вы не выйдете из них. Они также исчезнут, когда вы выйдете из Windows или перезагрузите компьютер.

Как работает AutoHotkey?

По своей сути AHK делает одно - привязывает действия к горячим клавишам. Существует множество различных действий, комбинаций горячих клавиш и управляющих структур, но все скрипты будут работать по одному и тому же принципу. Вот базовый сценарий AHK, который запускает Google Chrome всякий раз, когда вы нажимаете Windows + C:

#c :: Выполнить возврат Chrome

Первая строка определяет горячую клавишу. Знак фунта (#) является сокращением от клавиши Windows и c является клавишей C на клавиатуре. После этого стоит двойное двоеточие (: :), обозначающее начало блока действия.

Следующая строка - это действие. В этом случае действие запускает приложение с Run командой. Блок имеет return в конце. Вы можете иметь любое количество действий перед return. Все они будут стрелять последовательно.

Точно так же вы определили простое сопоставление клавиш к действию. Вы можете разместить столько из них, сколько захотите, в .ahk файле и настроить его на работу в фоновом режиме, всегда ища горячие клавиши для переназначения.

Горячие клавиши и модификаторы

Вы можете найти полный список модификаторов AHK в официальной документации, но мы сосредоточимся на наиболее полезных (и интересных) функциях.

Все клавиши-модификаторы имеют односимвольные сокращения. Например, # ! ^ +Windows, Alt, Control и Shift соответственно. Можно также различать между левым и правым Alt, Control и сдвигом с <и >модификаторами, который открывает много возможностей для дополнительных горячих клавиш. Например, + - это правый Shift. Взгляните на список ключей, чтобы узнать обо всем, на что вы можете ссылаться. (Спойлер: вы можете сослаться почти на каждую клавишу. Вы даже можете сослаться на другие устройства ввода без клавиатуры с небольшим расширением).

Вы можете комбинировать столько клавиш, сколько хотите, в одну горячую клавишу, но скоро у вас закончатся комбинации клавиш, которые нужно запомнить. Здесь на помощь приходят модификаторы, которые позволяют делать более сумасшедшие вещи. Давайте разберем пример из документации AHK:

Зеленый цвет #IfWinActiveназывается  директивой и применяет дополнительный контекст к горячим клавишам, физически находящимся под ним в сценарии. Любая горячая клавиша после нее будет срабатывать, только если условие истинно, и вы можете сгруппировать несколько горячих клавиш в одной директиве. Эта директива не изменится, пока вы не нажмете другую директиву, но вы можете сбросить ее с пустым значением #If(и если это похоже на взлом, добро пожаловать в AHK).

Директива здесь проверяет, открыто ли конкретное окно, определенное ahk_class Notepad. Когда AHK получает ввод «Win + C», он запускает действие под первым, #IfWinActive только если директива вернула true, а затем проверяет второе, если это не так. У AHK много директив, и вы можете найти их все в документации.

AutoHotkey также имеет строки быстрого доступа, которые работают как горячие клавиши, за исключением замены всей строки текста. Это похоже на то, как работает автозамена - на самом деле, есть сценарий автозамены для AHK - но поддерживает любое действие AHK.

Строка автоответчика будет соответствовать строке, только если она введена точно. Он автоматически удалит совпадающий текст, чтобы заменить строку автозамены, хотя это поведение можно изменить.

Действия

Действие в AHK - это все, что имеет внешнее влияние на операционную систему. У AHK много действий. Мы не можем объяснить все из них, поэтому выберем несколько полезных.

  • Отправка ввода, будь то текст или нажатия различных кнопок.
  • Перемещение мыши. Фактически, AHK иногда ошибочно отмечается как читерское программное обеспечение для видеоигр, поскольку с его помощью люди делали полностью функционирующих аймботов.
  • Щелчком мыши с позиционированием относительно текущего окна.
  • Отображение диалоговых меню с формами и полями ввода.
  • Перемещение окон, регулировка размера, открытие и закрытие.
  • Играет музыку.
  • Запись в реестр Windows. Да, действительно.
  • Изменение содержимого буфера обмена.
  • Чтение и запись файлов. Вы можете перебирать файлы и выполнять действия в каждой строке. AHK может даже писать в .ahk файлы и корректировать свой собственный код.

С большинством этих действий также будут связаны информационные команды. Например, вы можете писать в буфер обмена, но вы также можете получить содержимое буфера обмена для хранения в переменной и запускать функции при изменении буфера обмена.

Связывание всего с помощью управляющих структур

AHK не был бы тем, чем является, без всех структур управления, которые делают его полным по Тьюрингу.

Помимо #Ifдиректив, у вас также есть доступ к If внутренним блокам действий. АХК имеет For петлю, фигурные блоки фигурных скобок, Try и Catchоператор, и многие другие. Вы можете получить доступ к внешним данным из блока действий и сохранить их в переменных или объектах для дальнейшего использования. Вы можете определить собственные функции и метки. На самом деле, все, что вы могли бы легко сделать на другом языке программирования, вы, вероятно, сможете сделать в AHK, немного потрудившись и просмотрев документацию.

Например, представьте, что у вас есть скучная повторяющаяся задача, которая требует от вас нажатия нескольких кнопок подряд и ожидания ответа сервера, прежде чем делать это снова и снова до бесконечности. Вы можете использовать AHK для автоматизации этого. Вам нужно определить несколько циклов, чтобы переместить мышь в определенные места, щелкнуть, а затем перейти к следующему месту и щелкнуть еще раз. Добавьте несколько выражений ожидания, чтобы он не сломался. Вы даже можете попытаться определить цвет пикселей на экране, чтобы определить, что происходит.

Одно можно сказать наверняка - ваш сценарий, вероятно, будет некрасивым. Но ни AutoHotkey, и это нормально.