Как я могу убить некоторые активные процессы, выполнив поиск их имен файлов .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", "")
ответ, получивший голосование сверху, сделает это с гораздо менее запутанным и ненужным кодом