¿Cómo puedo eliminar algunos procesos activos buscando sus nombres de archivo .exe en C # .NET o C ++?
¿Cómo puedo eliminar algunos procesos activos buscando sus nombres de archivo .exe en C # .NET o C ++?
Respuestas:
Respuesta rápida:
foreach (var process in Process.GetProcessesByName("whatever"))
{
process.Kill();
}
(deje el .exe del nombre del proceso)
Contains("Spotify"))
mata todas las instancias de Spotify
. Quiero matar una instancia particular de Spotify
.
Mi solución es usar Process.GetProcess () para enumerar todos los procesos.
Al filtrarlos para contener los procesos que quiero, puedo ejecutar el método Process.Kill () para detenerlos:
var chromeDriverProcesses = Process.GetProcesses().
Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'
foreach (var process in chromeDriverProcesses)
{
process.Kill();
}
Actualizar:
En caso de que si desea utilizar el async
enfoque con algunos métodos recientes útiles de C# 8
( Async Enumerables ), verifique esto:
const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
.Where(pr => pr.ProcessName == processName)
.ToAsyncEnumerable()
.ForEachAsync(p => p.Kill());
Nota: el uso de
async
métodos no siempre significa que el código se ejecutará más rápido, pero al menos no perderá el tiempo de la CPU y evitará que el subproceso en primer plano se cuelgue mientras realiza las operaciones. En cualquier caso, debe pensar qué versión puede querer.
Puede usar Process.GetProcesses()
para obtener los procesos que se están ejecutando actualmente y luego Process.Kill()
matar un proceso.
Puede matar una instancia específica de 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");
Resumen : no importa si el nombre contiene .exe, el proceso finalizará. No necesita "dejar .exe del nombre del proceso", funciona al 100%.
.Replace(".exe", "")
respuesta simple en la parte superior votada haría esto con un código mucho menos complicado e innecesario