Як я можу вбити деякі активні процеси, шукаючи їх файли .exe у C # .NET або C ++?
Як я можу вбити деякі активні процеси, шукаючи їх файли .exe у C # .NET або C ++?
Відповіді:
Швидкий відповідь:
foreach (var process in Process.GetProcessesByName("whatever"))
{
process.Kill();
}
(залишити .exe від імені процесу)
Contains("Spotify"))
вбиває всі випадки Spotify
. Я хочу вбити конкретний екземпляр Spotify
.
Моє рішення - використовувати Process.GetProcess () для перерахування всіх процесів.
Відфільтрувавши їх до вмісту потрібних процесів, я можу запустити метод Process.Kill (), щоб зупинити їх:
var chromeDriverProcesses = Process.GetProcesses().
Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'
foreach (var process in chromeDriverProcesses)
{
process.Kill();
}
Оновлення:
Якщо ви хочете використати async
підхід з деякими корисними останніми методами з C# 8
( Async Enumerables ), перевірте це:
const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
.Where(pr => pr.ProcessName == processName)
.ToAsyncEnumerable()
.ForEachAsync(p => p.Kill());
Примітка: використання
async
методів не завжди означає, що код запуститься швидше, але, принаймні, це не витратить час процесора і запобіжить зависання потоку переднього плану під час виконання операцій. У будь-якому випадку вам потрібно подумати про те, яку версію ви могли б хотіти.
Ви можете використовувати Process.GetProcesses()
для отримання поточно запущених процесів, а потім Process.Kill()
для вбивства.
Ви можете вбити конкретний екземпляр MS Word.
foreach (var process in Process.GetProcessesByName("WINWORD"))
{
// Temp is a document which you need to kill.
if (process.MainWindowTitle.Contains("Temp"))
process.Kill();
}
public void EndTask(string taskname)
{
string processName = taskname.Replace(".exe", "");
foreach (Process process in Process.GetProcessesByName(processName))
{
process.Kill();
}
}
//EndTask("notepad");
Підсумок : незалежно від того, чи містить ім'я .exe, процес закінчиться. Вам не потрібно "залишати .exe від імені процесу", це працює на 100%.
.Replace(".exe", "")
відповідь у верхній частині голосової відповіді зробить це з набагато менш заплутаним та непотрібним кодом