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

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

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


Описание

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

Десктопные программыКонсольные утилиты
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

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


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