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

От шагов к скрипту

Когда переходить на скрипт​

Шагов хватает для большинства действий. Переходите на скрипт, когда нужно то, что шаг вместить не может:

  • арифметика, например сдвиг окна на 100 пикселей от его текущего положения;
  • сборка текста из частей, например имени файла с сегодняшней датой;
  • вызов встроенной функции внутри поля другой встроенной функции без промежуточной переменной;
  • цикл, использующий свой счётчик, например «для каждого из первых 5 окон».

При переходе шаги не теряются: действие хранит содержимое шагов и содержимое скрипта рядом (Шаги, скрипт и AutoHotkey).

Просмотр кода​

примечание

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

Скрыть код
Исходный текст шагов. Правки здесь перестраивают строки шагов выше; содержимое, которое нельзя показать строками, редактируется только здесь.
[[steps]] id = 1 op = "call" fn = "KeyboardPressKeyCombo" args = ["^W"]
  • Правка в просмотре кода ② перестраивает строки шагов над ним, как только текст становится допустимым.
  • Если текст нельзя показать строками, например потому, что в нём используется форма if «перейти к шагу», редактор показывает код без ссылки Показать код, поскольку тогда это единственный способ изменить шаги. Вместо строк выводится сообщение с причиной (Проблемы).
  • Редактор никогда не переписывает текст, который не может показать строками. Комментарии в тексте не сохраняются после правки строк.

Сама текстовая форма, все виды шагов и их поля описаны на странице Движок «Шаги».

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

  1. В поле Формат выберите Скрипт.
  2. Если у действия есть шаги, а содержимое скрипта пусто, диалог Преобразовать шаги в скрипт? спрашивает, перевести ли их. Нажмите Преобразовать.
  3. Перевод появляется в редакторе скрипта. Проверьте и доработайте его там.

Если шаги — это запись, сделанная на странице Запись макросов, диалог добавляет: Эти шаги — запись макроса. В виде скрипта они не учитывают параметры «Скорость воспроизведения» и «Детализация пути мыши при воспроизведении» записи макросов: ожидания выполняются с записанной скоростью, и воспроизводится каждое записанное движение мыши. (Параметры воспроизведения)

Перевод однонаправленный. Шаги остаются как были, поэтому при обратном переключении на Шаги они показываются без изменений, но превратить скрипт обратно в шаги нельзя.

Перевод не предлагается, если:

  • в содержимом скрипта уже есть текст (он был бы перезаписан);
  • шаги нельзя показать строками;
  • среди шагов есть Повторять, пока, Повторять до, Выйти из цикла или Остановить шаги. В скрипте есть только циклы со счётчиком и нет ничего, что выходит из цикла или досрочно завершает действие.

Во что превращается каждый шаг​

ШагСкрипт
Шаг встроенной функцииОдна инструкция, WindowMaximize(window);
Шаг с Сохранить результат какname = Builtin(…);
Задать переменнуюname = value;
$name в полеимя без $, name
Значение вроде Целевое окновызов, ContextGetWindow()
Именованная константа, например MouseButton.Primary, вне текстового поляимя как есть
Текстстрока в кавычках с экранированными обратными косыми чертами и кавычками
Пустое полепустое значение типа, например 0 или ""
Если / Иначе / Конец условияif (…) { … } else { … }
Сравнениеa == b и другие операторы; Инвертировать результат (not) превращается в !(…)
Повторить несколько разцикл for по счётчику с именем i (или i2 и так далее, если i занято)

Например, рецепт развернуть или восстановить превращается в:

window = ContextGetWindow();
if (WindowIsMaximized(window)) {
WindowRestore(window);
} else {
WindowMaximize(window);
}

Обратите внимание на одно различие: в шагах переменная, использованная до того, как её сохранил какой-либо шаг, читается как 0. В скрипте переменной нужно присвоить значение выше её первого использования в тексте, иначе скрипт не компилируется (Переменные).

Записи​

Запись макросов тоже показывает запись как шаги, с кнопкой Скрипт, которая переводит её тем же способом. Запись, оставленная шагами, следует параметру Скорость воспроизведения; переведённая воспроизводится так, как была записана.