Как программно запустить приложение
Платформа 1С великолепна, замечательна и просто мощная. Обширный функционал доступен из коробки, а технология внешних компонент делает ее практически безграничной в части расширения возможностей. Но иногда.
Иногда все это не помогает и для достижения результатов, решения задачи - приходиться использовать сторонний софт. И ладно, если бы это были COM-объекты, которые хоть и являются устаревшей технологией, но до сих пор часто используются и даже получили некоторую вторую жизнь с последними событиями. Но есть и другой путь - запуск приложений напрямую из кода встроенного языка.
Сегодня мы поговорим о запуске приложений программным способом. А также о некоторых проблемах и способах их решений под Windows и Linux.
Часть подходов, которые будут описаны ниже, применяются в разработке "Командный интерпретатор для 1С", но скачивать ее для изучения не обязательно. Все есть здесь. Там лишь все это организовано в удобном виде для использования.
Исполни это
Причин, когда такое может понадобиться - много, очень много. Все их рассматривать точно не будем. Остановимся на одном простейшем примере - запуск команды ping, чтобы узнать доступность какого-либо ресурса в сети средствами 1С. Иногда еще ping запускают для эмулирования ожидания (метода Sleep), но мы такое извращение делать не будем :)
Наша задача - запустить какое-либо приложение с параметрами и получить результат его работы. И сделать мы это должны безопасным способом!
Последнее означает, что если запускаемое приложение зависнет, запросит интерактивных действий от пользователя (а на сервере мы ничем ему в этом случае помочь не сможем) или просто будет выполняться дольше выделенного для него времени, то мы должны завершить его работу и продолжить выполнение кода в обычном режиме и обработать исключение. Никому ведь не нужны зависшие сеансы 1С?
Мы рассмотрим несколько решений как для Windows, так и для Linux. И так, поехали.
My Little Windows
По классике, сначала мы сделаем плохо, а потом сделаем хорошо. Прежде чем начать дам несколько служебных функций, которые будут использоваться в примерах ниже.
Решения не идеальные, но простые. Например, там можно найти как сохранить файл в кодировке UTF-8 без BOM, получить путь к файлу PowerShell.exe и др. Решения всегда можно улучшать.
Плохой пример
И так, как обычно выполняется запуск приложений из кода встроенного языка? Правильно - с помощью процедуры "ЗапуститьПриложение()":
Первым параметром передаем строку команды запуска и параметры по необходимости. Во втором устанавливаем каталог, что не обязательно. Третий параметр позволяет дождаться завершения приложения, а четвертый получить код возврата. Обычно если код возврата не равен 0, значит что-то пошло не так.
Вариант рабочий и позволяет запускать большую часть команд и целых скриптов. Комментарии даны исчерпывающие. Используются только штатные возможности платформы 1С для выполнения команд. И это плюс. Но у этого подхода есть и большой минус - низкая надежность и непредсказуемость результата в тех случаях, когда точно не известно, как долго будет команда выполняться и не потребует ли приложение интерактивных действий пользователя. Если интерактивные действия потребуются на стороне сервера, где мы об этом даже и не узнаем, то сеанс 1С может подвиснуть на всегда.
В качестве решения может быть реализация таймаута выполнения команды, но для процедуры "ЗапуститьПриложение" такое реализовать практически невозможно. Можно, конечно, попробовать запустить приложение и ожидать файла-результата какое-то время, но это решит проблему частично. Зависания не будет, но приложение будет запущено и дальше, ожидая внешней команды.
WScript.Shell нас спасет
Мы же в среде Windows. Давайте используем ее средства в виде COM-Объекта "WScript.Shell":
Безопасный запуск команды / скрипта через WScript.ShellВот такая портянка для безопасного запуска приложений.
Если кратко, то для выполнения команды добавили таймаут. По истечении времени выполнения, приложение завершается и вызывается исключение.
Теперь приложение не зависнет и в случае чего мы сможем завершить его работу принудительно.
Мое имя Power, PowerShell
Пойдем дальше и сделаем наше решение более интересным. Что, если нам нужно запустить не простую команду CMD или BAT'ник, а команду или скрипт PowerShell, но на тех же условиях! Для примера опять же оставим запуск бесконечного пинга :)
Еще одна портянка кода, но куда без них.
Принцип тот же самый, что и в примере выше. Отличие находится в области "ПодготовкаСкриптаPowerShell", где выполняется подготовка скрипта PowerShell для запуска и установка необходимых параметров для приложения PowerShell.exe. Иначе параметры безопасности не дадут нормально запустить скрипт. Подробнее об этом читайте на MSDN.
Фактически, теперь можно запускать любые скрипты хоть CMD, хоть PowerShell. А если сильно хочется, то можно и GIT Bash под Windows использовать или даже подсистему WSL под Windows 10. Но все это уже другая история. Осталось поговорить про Linux.
*.nix is my own
Под *.nix привычнее всего использовать bash для выполнения команд. Можно ли использовать bash из встроенного языка платформы 1С? Да, можно. Можно запускать как отдельные команды, так и целые скрипты. При этом получать результат и, что самое главное, делать это безопасно как в примерах выше.
В далеком 2015 году на Mista была поднята тема "Запуск файлов *.sh в самой 1с". Возможно, информация ниже будет ответом на вопрос, т.к. точного ответа так там и нет. Но может быть я не прав :)
Запускаем bash-скрипты
Первое, что нужно понять - в Linux нет COM-объектов. Значит придется обойтись штатными средствами платформы 1С. Выглядеть это будет так:
Здесь мы устанавливаем произвольный текст команды для Bash и выполняем его. В чем то прием аналогичен тому, что мы делали для Windows. Комментарии даны полные, но на паре моментов остановимся подробнее.
Некоторые нюансы
Первое, что может показаться интересным - это вызов "dos2unix" для сформированного ранее файла скрипта. Зачем это нужно? В операционной системе Windows по умолчанию для переноса строк в файлах используется последовательность символов "\r\n" (перевод каретки + перенос строки). В Unix-подобных системах используется только символ переноса строки "\n". Для Windows символ перевода каретки был добавлен для того, чтобы в древние времена можно было отправлять на печать текст без каких-либо особых драйверов. Телетайп навсегда! Этот легаси остался и по сей день и никому не мешает, ну почти.
Нам же он может сильно помешать по двум причинам:
- Несмотря на то, что сервер 1С установлен под Linux - все равно стандартный перенос строки платформа формирует как "\r\n". Даже если для таких классов как "ЗаписьТекста" или "ТекстовыйДокумент" устанавливать символ переноса строки другой (например, Симполв.ПС или по коду символа переноса строки равному 10), то платформа все равно использует символ перевода каретки.
- Еще может быть ситуация, когда текст команды для выполнения передается с клиента под управлением Windows на сервер под Linux и символы перевода каретки будут там присутствовать.
Мешать они будут потому что Bash не понимает что с ними делать. Если в файле скрипта будет содержаться символ "\r", то мы получим ошибку:
Вот, например, обсуждение подобной проблемы. Так вот, с помощью команды "dos2unix" можно убрать все символы, несовместимые содержимым скрипта Bash и сделать его корректным. На скриншоте ниже показан пример преобразования содержимого скрипта. (Да, я использую Notepad++ даже в Linux, если Вы его узнали).
Конечно, тут есть минус - пакет "dos2unix" должен быть установлен на сервер. Сделать это проще простого. Вот так это, например, выглядит для Ubuntu:
Но это не единственная особенность. Для того, чтобы ограничить время выполнения команды мы используем штатные возможности - команду timeout. С ее помощью мы можем указать сколько времени выделяется для выполнения команды / скрипта.
В примере выше мы выполняем некоторый скрипт с таймаутом 10 секунд. Подробнее смотрите мануал :)
Теперь Вы можете запускать приложения, скрипты или команды с помощью Bash из Linux безопасным способом.
Скрытая угроза
Частным случаем запуска процессов небезопасным образом является использование COM-объектов. Не все COM-объекты порождают процессы, которые нужно контролировать. Но, например, всеми любимые Word и Excel, которые часто до сих пор ставят на сервера, делают именно так. Они запускают соответствующий процесс "word.exe" или "excel.exe" и дальше управляют им. Не говоря уже про чистоту использования лицензий (эта тема касалась здесь), это еще и не всегда безопасно с точки зрения работы этих приложений.
Тут все просто - в момент создания объекта документа для его обработки как-раз и создается процесс "word.exe". После завершения всех необходимых действий, метод "Quit" закрывает приложение и все работает как надо. Но что, если в момент выполнения алгоритма заполнения произойдет ошибка? Правильно, метод "Quit" не будет выполнен и процесс Word'а останется "висеть". Конечно, можно попытаться обезопасить себя как это рекомендует стандарт разработки 1С и добавить "попытку":
Тут мы пытаемся закрыть приложение и освободить все связанные ресурсы. Часть кейсов это решит, но, к сожалению, не все. Если, например, в момент работы с COM-объектом возникнет не исключение, а падение рабочего процесса, то никакие действия по освобождению ресурсов выполнены не будут и процесс останется висеть в памяти до перезагрузки сервера / компьютера. Ну или пока не будет "убит" принудительно.
К сожалению, при непредвиденном завершении рабочего процесса мы особо ничего не можем сделать для контроля завершения всех запущенных процессов из кода встроенного языка. Все-таки это нештатная ситуация и решать ее можно только нештатными средствами. Почти все "костыли" по этой теме дают сбои в той или иной степени.
А у Вас на сервере бывают ситуации с десятком запущенный процессов "excel.exe"? :)
Альтернативные подходы
В качестве многоточия для этой темы хотел бы упомянуть и альтернативные способы решения проблем с освобождением ресурсов запущенных из 1С процессов:
- Организовать bat/ps/bash скрипт, который будет ночью "убивать" определенные процессы. Например, те же "excel.exe". Костыль? Да. Работает? Да.
- Сохранять в базе 1С (например, в регистре сведений) информацию о запущенных процессах (идентификатор процесса, имя и др.). Ночью или в другое время запускать регл. задание, которое будет проверять завершение этих процессов. Костыль? Да. Работает? Да.
- Перезагружать сервер с периодичностью в несколько дней. О сколько проблем можно решить! :) Костыль? Да. Работает? Да :)))
Список можно продолжать и дальше. Но возможно правильным вариантом будет - поиск решения задач иным способом, а не запуском сторонних процессов. Если такое, конечно, возможно.
Удачи, друзья!
Всем чистого кода, хороших решений и меньше "костылей"! До следующих встреч!
А как Вы работаете со сторонними процессами из 1С?
Другие ссылки
-
- инструмент для выполнения команд CMD / PowerShell из 1С
Авторские разработки
Транслятор запросов 1С в SQL - инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.
Просмотр и анализ структуры базы данных (отчет на СКД) - отчет для просмотра и анализа структуры базы данных с поддержкой файловых баз (ограниченный режим), а также баз на SQL Server и PostgreSQL.
Просмотр и анализ журнала регистрации (отчет на СКД) - отчет на базе системы компоновки данных (СКД) для просмотра записей журнала регистрации.
История работы пользователей (отчет на СКД) - отчет для просмотра истории работы пользователей (СКД, просмотр для любого пользователя).
Экспорт журнала регистрации. Набор инструментов (приложения + исходный код) - набор инструментов для экспорта данных журнала регистрации во внешние хранилища для Windows и Linux. Готовые приложения и исходный код.
Путеводитель по истории релизов - отчет по истории выпуска релизов продуктов фирмы "1С" и анализа информации по обновлениям.
-
Помощник работы с идентификаторами объектов - инструмент для расширенного анализа идентификаторов объектов.
Анализ производительности APDEX (бесплатный) - отчет для просмотра и анализа замеров производительности в конфигурациях на базе БСП.
Обозреватель криптографии - отчет для просмотра доступных провайдеров и сертификатов криптографии на сервере и клиенте.
Пакетная выгрузка / загрузка внешних отчетов и обработок - пакетная выгрузка / загрузка внешних отчетов и обработок для массовый манипуляций с ними.
Мастер полнотекстового поиска - набор инструментов для работы с полнотекстовым индексом платформы 1С. Стандартные и расширенные возможности.
Командный интерпретатор для 1С - инструмент для выполнения команд CMD / PowerShell из 1С
Запуск внешнего приложения
Скажите, как можно запустить внешнее приложение? Долго гуглил, информации - море. Читал и пробовал.
Запуск внешнего приложения по нажатию на кнопку
подскажите пожалуйста функцию, так чтобы например кнопку тыкнул и какая-то програма начала работать
Где в XE5 можно настроить запуск внешнего приложения перед компиляцией проекта?
subj Есть исходник, который перед сборкой должен пропускаться черед внешний препроцессор. Никак.
Извлечение данных из внешнего приложения
как в мою программу можно копировать данные из внешней? значение нужно извлечь из statusbar panel в.
Способов много
1 из них:
вместо SW_SHOW можно SW_NORMAL, SW_HIDE, SW_RESTORE . и.т.д
Легче всего использовать WinExec.
LPCSTR lpCmdLine, // Адрес программы
UINT uCmdShow // Стиль
);
SW_HIDE Окно в скрытом режиме.
SW_MAXIMIZE Окно максимального размера
SW_MINIMIZE Окно находится в свернутом виде, активируется следующее верхнее окно в Z последовательности.
SW_RESTORE Активирует и показывает окно. Если окно свернуто или развернуто, Windows восстанавливает его
к первоначальному размеру и позиции. Приложение должно определить этот флаг при восстановлении свернутого окна.
SW_SHOW Активирует окно и выводит его в текущих размерах и позиции.
SW_SHOWMAXIMIZED Активирует и показывает окно в развернутом виде.
SW_SHOWMINIMIZED Активирует и показывает окно в свернутом виде.
SW_SHOWMINNOACTIVE Отображает окно в свернутом виде. Активное окно остается активным.
SW_SHOWNA Отображает окно в текущем состоянии. Активное окно остается активным.
SW_SHOWNORMAL Активирует и показывает окно. Если окно свернуто или развернуто,
Как из одного приложения (A) запустить инсталляцию apk другого приложения (Б) (желательно полностью в авто режиме), а потом из приложения (A) запустить приложение (Б)?
Объясняю зачем: делается корпоративная программа, (работающая на нескольких планшетах), которая часто обновляется, и нужно написать агент, который должен в авто-режиме принимать apk по сети и обновлять приложение (Б).
Пишу на C++ Builder XE6, Андроид 7.
Ссылка на комментарий
22 ответа на этот вопрос
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Похожий контент
В визуал студии в Xamarin есть такой класс -Java.Security.KeyStore Class, этот класс(как я понял) отвечает за подключение к хранилищу ключей андроида,короче говоря Android keystore system .
А вот как достучаться до этой функции в с++builder ?Я хочу сделать привязку приложения через Android keystore system ,а как это сделать в Rad студии не знаю
Нужна помощь!
Все перепробовал, не выходит каменный цветок.
На форме лежит скрытый компонент THUETrackBar.
Хочется реализовать следующий функционал на с++ (fmx): свайп вверх по любому месту экрана - делает компонент THUETrackBar видимым, и двигает его ползунок вверх, свайп вниз - соответственно вниз.
этот код не фурычит в процессе свайпа, только по завершении
Программа для запуска программ по расписанию
Запустить любую программу в указанное время в операционной системе от Microsoft можно при помощи штатного функционала. Для этого нам не понадобится устанавливать какое-либо дополнительное программное обеспечение. Рассмотрим подробнее, как это реализовать:
- Изначально запускаем планировщик задач Windows. Для этого нам потребуется перейти к панели управления (если у вас Windows 10 начните писать название панели управления в поисковом инструменте, если Windows 7, запустите приложение из меню «Пуск»). В открывшейся панели управления переходим к разделу «Система и безопасность». При этом режим отображения должен быть установлен, как «Категория».
- В открывшемся списке находим пункт «Администрирование» и переходим к нему.
- На следующем этапе запускаем и сам планировщик заданий.
- Жмем кнопку создания новой задачи. В появившемся окне в первую очередь прописываем название нашей задачи для упрощенной идентификации. Это делается в первой вкладке, которая называется «Общие».
- Переходим на вкладку «Триггеры» и настраиваем время запуска нашего приложения. Это может быть запуск по расписанию, производимый в определенное время. Также присутствует и ряд других параметров, позволяющих максимальной гибко настроить период активации выбранной программы.
- Следующий этап — это настройка меню действий. Переключаемся на нужную вкладку и жмем кнопку «Создать» (обозначена цифрой «2»). В открывшемся окошке выбираем «Запуск приложения» затем жмем кнопку «Обзор». Когда запустится проводник Windows находим ту программу, которая должна запускаться. Выбираем приложение и жмем кнопку «Открыть».
- Теперь настраиваем условия запуска. Тут можно задать ряд вспомогательных параметров, а именно:
- Задача может запускаться при простое компьютера.
- Приложение стартует только при питании от электросети.
- Для выполнения задачи компьютер будет пробуждаться.
- ПО будет стартовать только при подключении к определенной сети.
- Последняя вкладка, с которой нам нужно будет поработать, это «Параметры». Тут мы можем выполнять нашу задачу по требованию, немедленно запускать, если пропущен плановый запуск или настроить остановку запуска. Когда все нужные изменения будут внесены, мы жмем кнопку «ОК».
Готово. Теперь выбранное приложение будет запускаться тогда, когда мы ему это «сказали». Естественно, будут учиться все параметры, которые были заданы в планировщике заданий.
Запуск от имени администратора
Итак, давайте также поговорим о программе для запуска других программ от имени администратора. На самом деле в данном случае нам даже не придется устанавливать какое-либо стороннее программное обеспечение. Для того чтобы запустить любое приложение или игру в операционной системе Windows от имени администратора нам нужно просто сделать правый клик мышью по его иконке и выбрать соответствующий пункт в контекстном меню.
Существует одна загвоздка: выполнить такие действия можно только из-под учетной записи с администраторскими полномочиями. Если у вас гостевой аккаунт, сделать это не получится. И вам не помогут абсолютно никакие программы.
Песочница
В Windows 10
с Майским обновлением 2019 года «Десятка» получила встроенный инструмент «Песочница». Теперь, все что нам нужно сделать, это включить ее. А делается это так:
- Переходим к нашей панели управления и кликаем по пункту «Программы».
- На следующем этапе переходим к пункту «Программы и компоненты».
- В новом окне в боковом меню жмем пункт «Включение или отключение компонентов Windows».
- Появится еще одно окошко, в котором нам нужно найти пункт с песочницей Windows 10. Для того чтобы ее включить просто ставим флажок напротив нужного чекбокса. Сохраняем изменения, нажав кнопку «ОК».
- Дожидаемся пока операционная система внесет все нужные изменения.
- Для того чтобы изменения применились нам обязательно нужно перезагрузить компьютер или ноутбук.
Теперь песочница появится в меню пуск Windows 10 и вы сможете запускать любые приложения без вреда для основной операционной системы. Каждый раз, когда песочница будут закрыта любое приложение и все его данные окажутся удалены.
В более ранних ОС от Microsoft
Точно так же, как и в предыдущем случае данное приложение для запуска программ способно делать это без вреда для основной операционной системы. Однако, в отличие от песочницы Windows 10, тут данные не удаляются после закрытия программы. И это, на самом деле, очень удобно.
При помощи данного подхода мы получаем операционную систему в операционной системе при этом наделенную полным функционалом оригинала. Одним из таких вариантов является Virtual Box.
Дополнительные панели для запуска программ
Для тех из вас, кому не хватает функционала меню «Пуск» и панели задач Windows, мы подготовили специальный лаунчер, который значительно расширить штатные возможности. Давайте разбираться, как с этим работать:
- Изначально нам нужно перейти на официальный сайт RocketDock и скачать последнюю русскую версию приложения оттуда.
- Произведите инсталляцию и запустите нашу программу. В результате на рабочем столе Windows появится красивая панель, внешний вид, которой можно тонко настраивать.
Обратите внимание на то, что на данную панель мы можем добавлять любые значки, которые будут запускать соответствующие приложения.
Запуск ПО вместе с ОС
Для того чтобы настроить запуск любой программы вместе с нашей операционной системой «Виндовс» XP, 7, 8 или 10, мы можем воспользоваться функционалом самой ОС. Делается это следующим образом:
- При помощи сочетания горячих клавиш win + r запускаем утилиту «Выполнить».
- Прописываем команду «shell:startup» жмем Enter .
- В результате запустится каталог с ярлыками автозагрузки тех приложений, которые должны стартовать вместе с системой.
- Параллельно открываем второе окно с нашим приложением. Перетаскиваем файл его запуска правой кнопкой мыши и из появившегося контекстного меню выбираем пункт «Создать ярлык».
Точно таким же образом мы можем настроить и автоматический запуск программы при подключении по RDP.
- При необходимости запуск программ при включении компьютера мы можем отменить из этого же меню.
Как вы сами понимаете, никаких программ для открытия файлов с расширением .EXE не существует. Это исполняемый формат Windows и такие приложения запускаются при помощи самой операционной системы. То же самое касается и .BAT-файлов. Программы с расширением JAVA тоже открываются без дополнительного ПО. Для открытия файлов .RAR существует бесплатный архиватор. Данное приложение доступно на официальном сайте 7-ZIP.
В результате ярлык нужного нам приложения появится в папке автозагрузки и программа будет стартовать вместе с Windows.
Программа для запуска Android-программ на Windows
Запустить любое приложение или игру от Android на нашей операционной системе Windows в оконном режиме очень просто. Для этого нам необходимо просто установить специальный эмулятор, и таким образом мы получим полноценный Google Play Market на своем ПК или ноутбуке. Работает это следующим образом:
- Переходим на официальный сайт BlueStacks и скачиваем последнюю русскую версию эмулятора оттуда. Когда это будет сделано запускаем полученный файл и устанавливаем приложение.
- Запускаем наш эмулятор и авторизуемся при помощи Google-аккаунта. Если такового нет, пройдите простую регистрацию.
- В результате для вас окажется доступным Google Play Market и с его помощью вы сможете устанавливать любую игру или программу прямо на Windows.
При этом поддерживается приложения любой сложности, вы будете получать уведомления от них, а также создаются ярлыки прямо на рабочем столе операционной системы от Microsoft. В результате вам даже не нужно запускать эмулятор, вы просто кликайте по ярлыку и приступайте к работе с приложением. Кроме этого, поддерживается любая периферия, например, наушники, микрофон или веб-камера.
Программы для запуска образа диска
К для того, чтобы открыть образ диска существует стороннее программное обеспечение, однако в новой версии операционной системы от Microsoft все работает без него.
В Windows 10
Для того чтобы открыть образ в формате .ISO в операционной системе Windows 10 никакого дополнительного программного обеспечения устанавливать не нужно. Вам необходимо просто сделать двойной левый клик по такого типа файлу. В результате содержимое нашего образа откроется в проводнике Windows и может быть оттуда запущено.
Если у вас есть другой формат образа, не поддерживаемый Windows 10, воспользуйтесь следующим вариантом.
Предыдущие ОС
Данное приложение поддерживает огромное количество функций, включая запись образа операционной системы на внешний носитель.
Запускаем Windows на MacOS
И то и другое приложение доступно в магазине iTunes.
Работа Windows-приложений на Linux
При помощи данной виртуальной машины вы сможете установить любую операционную систему или программу от нее внутри своего Linux-дистрибутива и использовать ее по мере необходимости.
Запуск старых игр на Windows 10
Если кто-то из вас ищет программу для запуска старых игр на новой операционной системе Windows 10, бросьте это. Сейчас мы покажем один маленький лайфхак, который позволит устанавливать и наслаждаться любыми играми на вашей «Десятке». Работает это следующим образом:
- Жмем по иконке нашей игры и в появившемся контекстном меню и выбираем пункт «Свойства».
- Переключаем во вкладку «Совместимость» и ставим флажок напротив пункта «Запустить программу в режиме совместимости».
- Из выпадающего списка выбираем Windows 7 и сохраняем изменения, нажав кнопку «ОК».
В результате большинство игр начнет работать и на новой операционной системе от Microsoft.
Программа запуска игры Fortnite
Кстати, запустить любое приложение от Яндекс можно, просто прописав его название в поисковой строке Windows. В «Десятке» она находится прямо на панели задач, а в Windows 7 найти ее можно в меню «Пуск».
Подводим итоги
В принципе, на этом мы свою статью можно заканчивать. Как нам кажется, мы рассказали о лучших программах для запуска других программ различными способами. Однако, свое общение с вами, пользователями, мы на этом не заканчиваем. Если какие-то вопросы останутся, воспользуйтесь формой комментирования, прикрепленной немного ниже. Мы всегда читаем комментарии и по мере необходимости даем ответ тому или иному человеку, обратившемуся с проблемой.
Существуют и другие варианты запуска программ, например, через командную строку или Power Shell. Однако, это равносильно распилу многовековых сосен лобзиком. Естественно, мы не стали морочить вам голову, и захламлять свою статью бесполезными вариантами.
Читайте также: