Запускать и закрывать другие приложения из моего Winform C # - PullRequest
0 голосов
/ 03 января 2019

Это небольшая часть моей программы, в которой моей программе нужно запустить программу из DataGridView (Content Clicked Event), и она просто прекрасно выполняет эту программу, но не может закрыть ее, потому что некоторые из входящих программ не имеют такой же имя процесса как имя файла. Я тоже пытался получить processid, но он выдает следующую ошибку (не могли бы вы предоставить мне рабочий код, потому что я могу получить идентификатор моего процесса winform, но как я могу получить processid запущенного извне приложения из моей программы. я попробовал это выдает следующую ошибку

Произошло необработанное исключение типа «System.ArgumentException» в System.dll Дополнительная информация: Процесс с идентификатором 16924 не запущен.) "

код, в котором я получаю идентификатор процесса, но не удается, находится ниже

    private void button1_Click(object sender, EventArgs e)
    {
        var processid = Process.Start("Calc");
        pn =processid.ProcessName;
        pid = processid.Id;
    }
    int pid;
    String pn;
    private void button2_Click(object sender, EventArgs e)
    {
           var process1 = Process.GetProcessById(pid);
            process1.Kill();
    }

Пустой код ниже.

Я уже пробовал:

    private void button1_Click(object sender, EventArgs e)
    {
        Process.Start("Calc");
    }
    private void button2_Click(object sender, EventArgs e)
    {
        foreach (var process in Process.GetProcessesByName("Calc"))
        {
            process.Kill();
        }
    }

Мой код:

    private void button1_Click(object sender, EventArgs e)
    {
        Process.Start("THIS PATH WILL COME FROM DATABASE");
    }
    private void button2_Click(object sender, EventArgs e)
    {
        foreach (var process in Process.GetProcessesByName("PROCESS NAME WHICH MY PROGRAM STARTED"))
        {
            process.Kill();
        }
    }

1 Ответ

0 голосов
/ 03 января 2019

Когда вы запустите процесс, получите Id процесса и сохраните его. Затем вы можете получить процесс по id, чтобы убить его. Это не только гарантирует, что вам не нужно знать имя процесса (если он отличается от пути его запуска), но и гарантирует, что вы убьете правильный экземпляр, если запущено несколько экземпляров, некоторые из которых не были запущены по вашей программе.

...