Перейти к основному содержимому

Шаги, скрипт и AutoHotkey

То, что делает действие, можно записать тремя способами. Формат на карточке Что делает страницы Действия выбирает, какой из них выполняется.

Что делает
Формат
ШагиСкриптAutoHotkey
Каждый режим хранит своё содержимое. Выполняется только выбранный.
ФорматЧто этоКогда выбирать
ШагиСписок шагов, которые вы выбираете и заполняете, по строке на шаг. Код вводить не нужно.Вы хотите собрать действие без написания кода. Подходит большинству действий: отправить клавиши, ввести текст, переместить или закрыть окна, подождать, задать вопрос.
СкриптСобственный язык скриптов Input.Observer, вводимый в редакторе кода.Нужны арифметика, сборка текста из частей, циклы со счётчиком-переменной или что-то, что нельзя выразить шагами.
AutoHotkeyСкрипт AutoHotkey v2, выполняемый самим AutoHotkey.У вас уже есть код AutoHotkey или нужно то, что умеет только AutoHotkey.

Шаги и скрипт выполняются внутри Input.Observer и вызывают одни и те же встроенные функции: шаги — это визуальный способ записать то, что записал бы скрипт. См. Шаги и Справочник по языку скриптов.

Каждый формат хранит своё содержимое​

Действие хранит тело шагов, тело скрипта и тело AutoHotkey рядом. Переключение Формат ① меняет, какое из них выполняется. Остальные никогда не удаляются, поэтому можно переключиться обратно.

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

Переход от шагов к скрипту​

Если переключиться с Шаги на Скрипт, когда у действия есть шаги, а тело скрипта пусто, Input.Observer предлагает перевести шаги: Преобразовать шаги в скрипт? Выберите Преобразовать, чтобы поместить результат в редактор скриптов.

  • Шаги остаются как есть. При возврате к Шаги они отображаются без изменений.
  • Обратного преобразования нет. Скрипт нельзя превратить в шаги.
  • Для шагов, использующих Повторять, пока, Повторять до тех пор, пока не, Выйти из цикла или Остановить шаги, перевод не предлагается, потому что в скриптах нет соответствующих операторов. Переключиться всё равно можно; тело скрипта просто начнётся пустым.
  • AutoHotkey никогда не преобразуется ни в одну, ни в другую сторону.
  • Если шаги — это запись со страницы Запись макросов, диалог также сообщает, что скрипт игнорирует Скорость воспроизведения и Детализация пути мыши при воспроизведении: его паузы выполняются с записанной скоростью, а каждое записанное движение мыши воспроизводится (Параметры записи).

Во что превращается каждый вид шага, показано на странице От шагов к скрипту.

AutoHotkey​

AutoHotkey — отдельная программа, которую Input.Observer запускает при выполнении действия AutoHotkey. Она не входит в комплект: вы сами устанавливаете AutoHotkey v2 и сообщаете Input.Observer, где он находится.

  1. Установите AutoHotkey v2.
  2. На странице Общие включите Включить AutoHotkey и задайте в Исполняемый файл AutoHotkey его программный файл, например AutoHotkey64.exe.
  3. Теперь в Формат появляется AutoHotkey. Примените изменения, чтобы движок использовал новый параметр.

Правила:

  • AutoHotkey предлагается в Формат, только пока включено Включить AutoHotkey или если действие уже выполняется как AutoHotkey. Действие AutoHotkey при выключенном AutoHotkey ничего не делает, и страница об этом сообщает.
  • Используйте обычную сборку AutoHotkey. Сборки с _UIA в имени, например AutoHotkey64_UIA.exe, не могут выполнять скрипты из Input.Observer.
  • Если AutoHotkey включён, но его программу не удаётся найти при запуске или при перезагрузке конфигурации, Input.Observer предлагает Выбрать исполняемый файл AutoHotkey или Оставить как есть.
  • Каждое выполнение запускает новый процесс AutoHotkey с вашим скриптом. Он не может вызывать встроенные функции Input.Observer и работает, пока не завершится сам; горячая клавиша остановки всех действий его завершает.
  • Перед вашим скриптом Input.Observer задаёт переменные, описывающие триггер, например IO_ActionName, IO_TriggerKind и окно жеста или горячей клавиши (Переменные AutoHotkey). Список Переменные, доступные здесь в редакторе показывает те, что предоставляют триггеры действия; щёлкните переменную, чтобы вставить её.
  • То, что скрипт пишет в стандартный вывод, появляется в диагностической консоли с префиксом AHK: (Консоль).

Действие на шагах или скрипте тоже может выполнить фрагмент кода AutoHotkey встроенной функцией AutoHotkeyExecuteScript. Действуют тот же параметр и тот же исполняемый файл.

Переменные AutoHotkey​

Каждый запуск AutoHotkey начинается с нескольких строк, которые Input.Observer добавляет перед вашим скриптом и которые задают переменные IO_ на основе того, что запустило действие. Это относится и к действию, записанному на AutoHotkey, и к коду, выполняемому через AutoHotkeyExecuteScript, который получает переменные вызвавшего его действия.

Каждый запуск задаёт эти три:

ПеременнаяСодержит
IO_ActionNameИмя действия. Для глобального события — Global_Event_ и имя события в файле конфигурации, например Global_Event_release или Global_Event_foreground_changed. Пусто, если запуск ничем не вызван, например для скрипта, запущенного из консоли.
IO_AppGroupNameИмя группы приложений, в которой найдено действие, например Global. Пусто для глобального события.
IO_TriggerKindЧто вызвало запуск: Gesture, Hotkey, TextExpansion, MouseButton (глобальное событие кнопки мыши или Кнопка рисования отпущена), Wheel (глобальное событие колеса) или None.

Остальные зависят от триггера, и задаются только переменные этого триггера:

ТриггерПеременнаяСодержит
ЖестIO_GestureWindowОкно, над которым начат жест
IO_GestureButtonКнопка рисования: left, right, middle, x1 или x2
IO_GestureStartX, IO_GestureStartYГде начался штрих
IO_GestureEndX, IO_GestureEndYГде он закончился
IO_GestureBoundsLeft, IO_GestureBoundsTop, IO_GestureBoundsRight, IO_GestureBoundsBottomПрямоугольник вокруг всего штриха
IO_GesturePointsВсе точки штриха в порядке рисования — массив массивов [x, y]
Горячая клавишаIO_HotkeyWindowОкно на переднем плане при нажатии горячей клавиши
IO_HotkeyVkCodeКод виртуальной клавиши Windows для последней клавиши, например 75 для K
IO_HotkeyModifiersКлавиши-модификаторы сочетания, сложенные вместе: Ctrl 1, Shift 2, Alt 4, Win 8 (Ctrl+Alt — 5)
Подстановка текстаIO_TextExpansionWindowОкно, в котором вы вводили текст
IO_TextExpansionPatternВведённое сокращение
Событие кнопки мышиIO_MouseWindowОкно под указателем
IO_MouseButtonКнопка: left, right, middle, x1 или x2
IO_MouseX, IO_MouseYГде был указатель
Событие колесаIO_WheelWindowОкно под указателем
IO_WheelDeltaНасколько повернулось колесо, как сообщает Windows: 120 за один щелчок обычного колеса (колёса с плавной прокруткой и сенсорные панели отправляют меньшие шаги), положительное — от себя (или вправо), отрицательное — к себе (или влево)
IO_WheelHorizontaltrue для бокового поворота колеса, false для обычного
IO_WheelX, IO_WheelYГде был указатель
  • Окна — это дескрипторы окон, числа, которые AutoHotkey читает как идентификатор окна: "ahk_id " IO_GestureWindow указывает окно в WinActivate, WinGetTitle и других оконных функциях.
  • Позиции — экранные координаты в физических пикселях от левого верхнего угла основного монитора. Задайте CoordMode "Mouse", "Screen", прежде чем использовать их с функциями мыши AutoHotkey, которые иначе работают относительно активного окна.
  • Текст приходит в точности таким, каким был; кавычки, обратные апострофы и переносы строк в имени действия или группы экранируются за вас.
  • Переменная, которую триггер не предоставляет, не задаётся вообще, а AutoHotkey останавливает скрипт, когда тот читает незаданную переменную. Действие с триггерами нескольких видов или фрагмент, вызываемый из разных действий, должны сначала проверять IO_TriggerKind или использовать IsSet(IO_GestureWindow).

Например, действие, которое запускается жестом или горячей клавишей, выводит окно, к которому применено, на передний план и показывает его заголовок:

CoordMode "Mouse", "Screen"
win := IO_TriggerKind = "Gesture" ? IO_GestureWindow : IO_HotkeyWindow
WinActivate "ahk_id " win
MsgBox WinGetTitle("ahk_id " win), IO_ActionName

Движки скриптов из плагинов​

Плагин может добавить собственный движок скриптов. Тогда он появляется в Формат с именем плагина, а вводимый там текст передаётся плагину в точности как написан; Input.Observer его не проверяет. Если ни один запущенный плагин не предоставляет этот движок, страница предупреждает, что действие при выполнении будет пропущено. См. Плагины.

В простом режиме​

Простой режим показывает Формат только для действия, у которого уже есть скрипт или тело AutoHotkey. Для любого другого действия карточка сразу показывает шаги. Чтобы написать новое действие скриптом, переключите окно в расширенный режим (Окно настройки).