От шагов к скрипту
Когда переходить на скрипт
Шагов хватает для большинства действий. Переходите на скрипт, когда нужно то, что шаг вместить не может:
- арифметика, например сдвиг окна на 100 пикселей от его текущего положения;
- сборка текста из частей, например имени файла с сегодняшней датой;
- вызов встроенной функции внутри поля другой встроенной функции без промежуточной переменной;
- цикл, использующий свой счётчик, например «для каждого из первых 5 окон».
При переходе шаги не теряются: действие хранит содержимое шагов и содержимое скрипта рядом (Шаги, скрипт и AutoHotkey).
Просмотр кода
Расширенный режим. Показать код в конце редактора шагов показывает шаги как текст — в той форме, в которой они хранятся. Скрыть код снова скрывает его. При каждом выборе другого действия код изначально скрыт.
- Правка в просмотре кода ② перестраивает строки шагов над ним, как только текст становится допустимым.
- Если текст нельзя показать строками, например потому, что в нём используется форма if «перейти к шагу», редактор показывает код без ссылки Показать код, поскольку тогда это единственный способ изменить шаги. Вместо строк выводится сообщение с причиной (Проблемы).
- Редактор никогда не переписывает текст, который не может показать строками. Комментарии в тексте не сохраняются после правки строк.
Сама текстовая форма, все виды шагов и их поля описаны на странице Движок «Шаги».
Перевод шагов в скрипт
- В поле Формат выберите Скрипт.
- Если у действия есть шаги, а содержимое скрипта пусто, диалог Преобразовать шаги в скрипт? спрашивает, перевести ли их. Нажмите Преобразовать.
- Перевод появляется в редакторе скрипта. Проверьте и доработайте его там.
Если шаги — это запись, сделанная на странице Запись макросов, диалог добавляет: Эти шаги — запись макроса. В виде скрипта они не учитывают параметры «Скорость воспроизведения» и «Детализация пути мыши при воспроизведении» записи макросов: ожидания выполняются с записанной скоростью, и воспроизводится каждое записанное движение мыши. (Параметры воспроизведения)
Перевод однонаправленный. Шаги остаются как были, поэтому при обратном переключении на Шаги они показываются без изменений, но превратить скрипт обратно в шаги нельзя.
Перевод не предлагается, если:
- в содержимом скрипта уже есть текст (он был бы перезаписан);
- шаги нельзя показать строками;
- среди шагов есть Повторять, пока, Повторять до, Выйти из цикла или Остановить шаги. В скрипте есть только циклы со счётчиком и нет ничего, что выходит из цикла или досрочно завершает действие.
Во что превращается каждый шаг
| Шаг | Скрипт |
|---|---|
| Шаг встроенной функции | Одна инструкция, 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. В скрипте переменной нужно присвоить значение выше её первого использования в тексте, иначе скрипт не компилируется (Переменные).
Записи
Запись макросов тоже показывает запись как шаги, с кнопкой Скрипт, которая переводит её тем же способом. Запись, оставленная шагами, следует параметру Скорость воспроизведения; переведённая воспроизводится так, как была записана.