Как запустить программу программно

В мире программирования часто возникает необходимость запустить программу или скрипт и отправить ему команду. Это может быть полезно в автоматизации процессов, например, при работе с системами удаленного управления (например, при конфигурировании серверов).

Существует несколько способов программного запуска и отправки команды, о которых стоит рассказать подробнее. Мы рассмотрим три самых распространенных варианта: использование командной строки, библиотеки subprocess и модуля os.

1. Использование командной строки

Самый простой способ запустить программу и отправить ей команду — это использовать командную строку операционной системы. Вводим команду с именем программы и передаем ей необходимые аргументы.

Например, для запуска скрипта Python с аргументами можно использовать следующий код:

import os os.system(‘python myscript.py arg1 arg2’)

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

Невозможно запустить это приложение на вашем ПК в Windows 10

2. Библиотека subprocess

Библиотека subprocess предоставляет более гибкий и мощный способ работы с процессами в Python. Она позволяет запускать процессы, управлять ими, перенаправлять ввод-вывод и получать код завершения.

Например, мы можем запустить скрипт Python и передать ему аргументы следующим образом:

import subprocess process = subprocess.Popen([‘python’, ‘myscript.py’, ‘arg1’, ‘arg2’], stdout=subprocess.PIPE) output, error = process.communicate() print(output.decode())

Как запустить приложение программно?

Мой код должен проверять, установлено ли конкретное приложение:

да — запускаем

нет — запустите Play Маркет и найдите приложение

public void checkXposedInstaller() < String packageName = «de.robv.android.xposed.installer»; //check if app is installed try < PackageManager manager = getPackageManager(); Intent i = manager.getLaunchIntentForPackage(packageName); if (i == null) throw new PackageManager.NameNotFoundException(); i.addCategory(Intent.CATEGORY_LAUNCHER); checkXposedFramework(); >catch (PackageManager.NameNotFoundException e) < Toast.makeText(this, «app not found», Toast.LENGTH_LONG).show(); //*** download and root install apk // search on browser/market try < Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(«https://play.google.com/store/apps/details?id=» + packageName)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); >catch (android.content.ActivityNotFoundException e1) < Toast.makeText(this, «no app found to handle request», Toast.LENGTH_LONG).show(); >> >

Читайте также:
Лучшая программа по скорочтению

Но ничего из этого он не делает. Однако странно то, что когда я меняю имя пакета на что-то другое, например com.google.app , это работает как шарм! что я здесь делаю не так?

PS: блок try ничего не делает, сбоев, журналов не обнаружено

Как скачать OsEngine с ГитХаб. Как запустить программу?

user9555243 28 Май 2018 в 05:11

2 ответа

Лучший ответ

public static void launchPackageOrGotoStore(Context context, String packageName) < try < Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName); context.startActivity(intent); >catch (ActivityNotFoundException | NullPointerException ex) < try < context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(«market://details?id=» + packageName)) ); >catch (ActivityNotFoundException e) < context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(«http://play.google.com/store/apps/details?id com.facebook.katana»);

Просто попробуйте запустить Intent для имени пакета и поймать ActivityNotFoundException . Затем сначала запустите приложение Play Store, последняя попытка — запустить Интернет-магазин Play, если и приложение, и приложение Play Store не существуют.

Tam Huynh 29 Май 2018 в 03:37

Проверьте приведенный ниже код, и вы сможете проверить, установлено ли приложение или нет, если нет, то вы можете перенаправить в игровой магазин:

Источник: question-it.com

Как программно запустить дочерний процесс в том же сеансе отладки Visual Studio, что и родительский?

Я могу передать флаг дочернему процессу, который инструктирует его вызвать Debugger.Launch() , но это не приведет к ошибкам запуска при запуске, и это приведет к сеансу отладки, когда некоторые функции не включены (например, редактирование и продолжение, и т.д). Желательно, чтобы отладчик запускал процесс напрямую.

Rohit 27 янв. 2011, в 10:09
Поделиться

Я подозреваю, что название этого вопроса очень вводит в заблуждение — вы пытаетесь запустить этот процесс с VS или с приложением C #, которое, как оказалось, построено с использованием VS?

Will Dean 27 янв. 2011, в 09:07
То, что вы спрашиваете, не имеет никакого смысла.
Cody Gray♦ 27 янв. 2011, в 09:09

Читайте также:
Задачи по математике с ответами для 3 класса по программе занкова

Проблема в том, что Visual Studio не будет автоматически подключаться к дочерним процессам из коробки. Хотя есть решения для этого.

Johannes Rudolph 27 янв. 2011, в 09:13

Будет: ни я пытаюсь запустить процесс из приложения, встроенного в C #, но работает в режиме отладки в VS. Таким образом, оба ваших утверждения верны.

Rohit 27 янв. 2011, в 09:45
я должен закрыть / удалить этот вопрос, так как он дублирует stackoverflow.com/questions/986470/…
Rohit 27 янв. 2011, в 09:50

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru