Как закрыть внешнее приложение с помощью c # - PullRequest
2 голосов
/ 27 октября 2011

Я пытаюсь закрыть калькулятор, когда пользователь нажимает клавишу на клавиатуре. Но p.kill и p.CloseMainWindow не убивают калькулятор, а только оболочку, которая выполняется.

Process p = new Process();
p.StartInfo.FileName = "cmd";
p.StartInfo.Arguments = "/c calc ";
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.Start();
Console.WriteLine("Press any key to kill Calc");
Console.ReadKey();
p.CloseMainWindow();

p.Kill();

Ответы [ 3 ]

7 голосов
/ 27 октября 2011

Не используйте оболочку (cmd), но запускайте процесс calc напрямую. Установка Process.StartInfo.FileName в «calc» должна сделать это (при условии, что calc.exe находится в системном пути).

3 голосов
/ 27 октября 2011

Вам нужно найти калькулятор и убить его. На самом деле создано два процесса: один для cmd и другой для калькулятора. Вы убиваете только первого.

Другое решение - запустить калькулятор напрямую, без использования cmd.

0 голосов
/ 27 октября 2011

потому что ваш процесс - это не процесс calc.exe, а командная строка, которая выполняет calc.

чтобы найти процесс по имени и убить его, вы должны использовать GetProcessByName,

см. Пример здесь: C # Process Process.GetProcessesByName, Kill Process и Exit Event

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...