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

Запуск программ

🔗 Оригинальная страница — Источник данного материала


Описание​

Экшен служит для запуска сторонних программ. Таких как:

Десктопные программыКонсольные утилиты
Notepad, WinRar, Paintffmpeg, ImageMagick

Как можно использовать:​

  • ImageMagick. Набор утилит для чтения и редактирования файлов множества графических форматов (изображений).
  • FFmpeg. Библиотеки с открытым исходным кодом. Позволяют записывать, конвертировать и передавать цифровые аудио- и видеозаписи в различных форматах.
  • Запуск скриптов на Python и других языках программирования.
  • Работа с любыми другими приложениями.

Как добавить действие в проект?​

Через контекстное меню: Добавить действие → Свой код → Запуск программы

image-20200813-142250


Принцип работы​

image-20210607-091211

Исполняемый файл​

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

Особенности:​

  • Если файл по указанному пути не будет найден, то экшен завершится с ошибкой.
  • Можно использовать макросы переменных.
  • Если каталог выполняемой программы находится в переменной среды PATH, то можно указывать не полный путь к файлу, а только его название (например, notepad.exe или calc.exe).

Параметры запуска​

Здесь можно указать дополнительные команды, которые передаются запускаемой программе. У каждой программы свои параметры запуска (можно использовать макросы переменных).

image-20200813-150418
Запуск нового окна браузера Chrome с URL https://zennolab.com
При запуске консольных утилит в данной строке передаются аргументы.

Таймаут​

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

Можно указывать дробное значение через ,.

Не показывать окно процесса​

При включении данной опции запускаемая программа не будет отображена.

Не ждать завершения работы​

С этой настройкой Таймаут будет игнорироваться, и экшен не будет ждать, пока программа закончит работу.


Записать EXIT CODE​

Код возврата — это числовое значение, возвращаемое программой после завершения своей работы. Этот код может сообщать о том, завершилась ли программа успешно или произошла ошибка.

При нормальном завершении работы программы возвращают 0 (ноль). Если возвращено что-то другое, то скорее всего программа завершилась с ошибкой.

Чтобы опознать конкретный код, стоит вбить в поиск запрос: название_программы exit code код_возврата. Пример: ffmpeg exit code 137.

Записать STD OUT​

STDOUT (Standard Output) — это стандартный поток вывода, который используется программами для вывода текстовой информации, любой кроме ошибок. Он отображается в окне консоли.

Рассмотрим пример:​

При установке ImageMagick программа добавляет путь к своей папке в переменную среды PATH. После этого нет необходимости указывать полный путь к исполняемому файлу, можно просто написать: magick.exe <тут_аргументы>.

Для демонстрации запустим программу с аргументом -usage и перенаправим STD OUT в переменную. В ответ программа напишет базовую информацию о себе.

image-20200813-174153

Записать STD ERR​

STD ERR (Standard Error) — стандартный поток, предназначенный только для вывода данных при ошибках.

Пример:​

Повторим команду из предыдущего пункта, но сделаем ошибку и напишем -usage22:

image-20200813-174729

На скриншоте видно, что в STD ERR попал текст ошибки, сообщающий о неправильном аргументе или недостаточном их количестве.
Но мы также получили текст и в STD OUT — программа подсказывает, как правильно ею пользоваться.

Чтобы повторить команды, описанные выше.

Установите ImageMagick.
Откройте окно консоли (например, через Win+R → ввести cmd.exe → нажать Enter).
Затем написать команды: magick-usage и magick-usage22.


Пример использования​

Рассмотрим несколько сценариев на основе ImageMagick.

Цель: создать изображение.

  • Размер: 600 на 600 пикселей (-size 600x600).
  • Цвет фона: светло-синий (-background lightblue).
  • Расположение: по центру (-gravity Center).
  • Цвет текста: синий (-fill blue).
  • Шрифт: Arial (-font Arial).
  • Размер шрифта: 72 (-pointsize 72).
  • Текс: ZennoPoster (label:ZennoPoster).

Результат сохраним в файл: C:\Users\Administrator\Desktop\result.jpg.

Путь: C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe.

На вашем компьютере пути к файлам скорее всего будут отличаться.
result
Результат

Способ №1. Все параметры жёстко прописаны​

Все параметры жёстко прописаны

После выполнения данного экшена на рабочем столе появится файл result.jpg

Пример №2. Параметры переданы в виде переменных​

image-20200813-185801

Исполняемый файл: {-Variable.imagemagick_dir_path-}magick.exe.

Параметры запуска: {-Variable.parameters-} {-Project.Directory-}result.jpg.

{-Project.Directory-} — системная переменная, в которой хранится полный путь к расположению текущего проекта.

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

Параметры также можно поместить не в одну переменную, а разделить на несколько разных.

Итоговый файл result.jpg сохранится в ту же директорию, в которой находится проект.

Для использовании переменной {-Project.Directory-}

Проект должен быть сохранён на компьютере — иначе она будет пустой.


Пример №3. Запуск скрипта на Python​

Для работы данного примера в системе должен быть установлен Python.

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

image-20200814-085851

Исполняемый файл: C:\Users\user\AppData\Local\Programs\Python\Python38-32\python.exe.

Параметры запуска: C:\ZD\my_sript.py и два аргумента: 12 11.

Результат: 132 запишется в переменную result.

В этом примере скрипт лежит в C:\ZD\my_sript.py. На входе он принимает два числа и умножает их друг на друга. Затем ответ возвращается в консоль.

image-20200814-090306

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


Полезные ссылки​