Нужна помощь в составлении снипета на С#

enfox

Новичок
Регистрация
12.09.2015
Сообщения
5
Благодарностей
1
Баллы
3
Прошу помощи в составлении сниппета на С#, который будет убивать определенный процесс. Для понимания попытаюсь объяснить что необходимо:

Шаблон будет запускать поочередно несколько cmd.exe процессов с разными параметрами и выводить process.Id запуская сниппет:

Код:
string fileName = @"C:\Program Files (x86)\Streamlink\cmd.exe"; // путь к файлу или имя exe'шника (напр, cmd.exe)
string arguments = @"cmd.exe /k streamlink ..."; // параметры запуска
bool windowStyle = false; // true - не показывать окно процесса, false - показывать окно процесса
bool getProcessId = true; // true - получить ID процесса, false - не получать ID процесса
bool waitForExit = false; // true - ждать завершения работы, false - не ждать завершения работы
int timeOut = 10000; // таймаут выполнения, в миллисек
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = fileName;
process.StartInfo.Arguments = arguments;
if (windowStyle)
    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
else
    process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
process.Start();
if (getProcessId)
    return process.Id; // получаем ID процесса (создать переменную проекта processId)
if (waitForExit)
    process.WaitForExit(timeOut);
Этот снипет будет скачивать стрим трансляции. В какой-то момент мне будет необходимо остановить скачивание, поэтому я убиваю процесс по process.Id:

Код:
1.    int processId = int.Parse(project.Variables["processId"].Value);
2.    System.Diagnostics.Process.GetProcessById(processId).Kill();
Но проблема в том что при убивании процесса по process.Id скачивание стрима продолжается. Дело в то, что выводимый process.Id это ID процесса cmd.exe, но он запускает приложение для скачивания streamlink.exe и процесс python.exe. Загрузка стрима завершается только при снятии задачи в диспетчере задач. А также при закрытии процесса python.exe.

Т.е. задача состоит в том, чтобы снять задачу или убить процесс python.exe, при этом загрузка стрима будет останавливаться. Убить необходимо не все, а определенные python.exe, поэтому способ по имени ("python") не подойдет (т.к. убьет все процессы python) т.е. все загрузки убьются. Т.е. сниппет должен по известному process.Id от cmd найти дочерние ID streamlink.exe и python.exe и убить их по этому id. Есть у кого-то идеи как это реализовать или может другой путь подскажете?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)