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

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

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


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

Описание

Экшен служит для запуска сторонних программ. Запускать можно как обычные десктопные программы (Notepad, WinRar, Paint), так и консольные утилиты (ffmpeg, ImageMagick). Есть возможность передачи параметров запуска.

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

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

image-20200813-142250

Либо воспользуйтесь ❗→ умным поиском.

Где это можно применить?

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

Как работать с экшеном?

image-20210607-091211

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

Полный путь к файлу, который надо запустить (кликнув по кнопке “Выбора файлов” (выделена красным квадратом) откроется стандартный диалог поиска файлов на компьютере)

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

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

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

  • Например запуск нового окна браузера Chrome с URL https://zennolab.com будет выглядеть следующим образом:

image-20200813-150418

  • При запуске консольных утилит в данной строке передаются аргументы.

Таймаут

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

На заметку

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

image-20200813-152224

Это поведение можно отключить, описано чуть ниже

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

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

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

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

Записать EXIT CODE

Код возврата с которым завершилась вызываемая программа.

Обычно при нормальном завершении работы программы возвращают 0 (ноль). Если возвращено что-то другое, то, возможно, программа завершилась с ошибкой. Чтоб понять, что означает тот или иной код, стоит вбить в поиск запрос название_программы exit code код_возврата, пример - ffmpeg exit code 137

Записать STD OUT

Это стандартный поток вывода. Другими словами, всё что программа пишет в окно консоли (если это не сообщение об ошибке (-ах)) является STD OUT

Пример:

при установке ImageMagick программа добавляет путь к своей папке в переменную среды PATH и уже нет необходимости писать полный путь к исполняемому файлу, можно написать xml magick.exe <тут_аргументы> . Для демонстрации STD OUT запустим программу с аргументом -usage(в ответ программа напишет базовую информацию о себе) и перенаправим STD OUT в переменную.

image-20200813-174153

Записать STD ERR

Будет содержать в себе данные, если программа сообщит о какой-либо ошибке.

Пример:

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

image-20200813-174729

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

На заметку

Вы можете повторить команды описанные выше. Для этого надо установить ImageMagick, после открыть окно консоли (Win+R → вводим cmd.exe → нажимаем Enter) и в нём вводим команды magick-usage и magick-usage22


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

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

Цель: создать изображение размером 600 на 600 пикселей, со светло голубым фоном, с надписью “ZennoPoster” (синим цветом), шрифт - Arial, размер шрифта - 72. Результат сохраним в файл по пути C:\Users\user\Desktop\result.gif рядом с шаблоном. Команда будет выглядеть следующим образом (convert - одна из утилит входящих в состав ImageMagick. На Вашем компьютере путь к исполняемому файлу и рабочему столу может отличаться):

C:\Program Files\ImageMagick-7.0.10-Q16\convert.exe -size 600x600 -background lightblue -gravity Center -fill blue -font Arial -pointsize 72 label:ZennoPoster C:\Users\user\Desktop\result.gif
На заметку

Для подробностей по поводу того или иного аргумента используйте Вашу любимую поисковую систему. Это выходит за рамки данной справки.

Внимание

Для корректной работы команды в cmd.exe необходимо путь к исполняемому файлу взять в кавычки - "C:\Program Files\ImageMagick-7.0.10-Q16\convert.exe"

Пример №1. ImageMagick Все параметры жёстко прописаны

К сожалению все параметры запуска не поместились на скриншот
К сожалению все параметры запуска не поместились на скриншот

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

result

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

image-20200813-185801

  • В данном примере путь к папке с исполняемым файлом был вынесен в ❗→ переменную (например, шаблон может запускаться на разных компьютерах и на каждом может быть свой путь).
  • Все параметры тоже были вынесены в переменную (не обязательно было всё сохранять в одну переменную. Можно для каждого аргумента создать свою переменную и перечислить эти переменные в поле Параметры запуска)
  • Итоговый файл result.gif сохраняется в ту же директорию, в которой находится файл проекта. ({ -Project.Directory- }- системная переменная в которой хранится полный путь к директории текущего проекта)
Внимание

Проект должен быть сохранён на компьютере при использовании переменной { -Project.Directory- }. Т.к. в противном случае данная переменная будет пустой.

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

Внимание

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

Иногда, при поиске в интернете решения той или иной задачи можно найти скрипты написанные на разных языках программирования, которые делают именно то, что Вам нужно. Можно конечно полностью переписать код скрипта на C# и запустить с помощью экшена ❗→ Свой C# код. Или же запустить скрипт с помощью экшена Запуск программ и воспользоваться результатом его работы. Последний вариант и будет рассмотрен, на основе языка программирования Python.

Есть скрипт по пути C:\ZP\my_sript.py, на входе принимает два числа и умножает их друг на друга, ответ возвращается в консоль (в Вашем случае скрипт может генерировать изображение, текст; либо это может быть нейросеть, которая разгадывает капчу; в общем что угодно).

image-20200814-085851

  • В качестве исполняемого файла указываем C:\Users\user\AppData\Local\Programs\Python\Python38-32\python.exe(на Вашем компьютере путь может отличаться).
  • В параметрах запуска первым делом идёт путь к скрипту (C:\ZP\my_sript.py), далее два аргумента (12 11).
  • После запуска данного экшена в переменную result запишется результат работы - 132.

Вот как выглядит запуск того же скрипта в cmd.exe

image-20200814-090306


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