Wie kann ich einige aktive Prozesse beenden, indem ich in C # .NET oder C ++ nach ihren EXE-Dateinamen suche?
Wie kann ich einige aktive Prozesse beenden, indem ich in C # .NET oder C ++ nach ihren EXE-Dateinamen suche?
Antworten:
Schnelle Antwort:
foreach (var process in Process.GetProcessesByName("whatever"))
{
process.Kill();
}
(Lassen Sie .exe vom Prozessnamen weg)
Contains("Spotify"))tötet alle Instanzen von Spotify. Ich möchte eine bestimmte Instanz von töten Spotify.
Meine Lösung besteht darin, Process.GetProcess () zum Auflisten aller Prozesse zu verwenden.
Indem ich sie filtere, um die gewünschten Prozesse zu enthalten, kann ich die Process.Kill () -Methode ausführen , um sie zu stoppen:
var chromeDriverProcesses = Process.GetProcesses().
Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'
foreach (var process in chromeDriverProcesses)
{
process.Kill();
}
Aktualisieren:
Wenn Sie den asyncAnsatz mit einigen nützlichen neueren Methoden aus C# 8( Async Enumerables ) verwenden möchten , überprüfen Sie Folgendes :
const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
.Where(pr => pr.ProcessName == processName)
.ToAsyncEnumerable()
.ForEachAsync(p => p.Kill());
Hinweis: Die Verwendung von
asyncMethoden bedeutet nicht immer, dass Code schneller ausgeführt wird, verschwendet jedoch nicht die CPU-Zeit und verhindert, dass der Vordergrund-Thread während der Ausführung hängt. In jedem Fall müssen Sie überlegen, welche Version Sie möchten.
Sie können verwenden Process.GetProcesses(), um die aktuell ausgeführten Prozesse abzurufen und dann Process.Kill()einen Prozess abzubrechen.
Sie können eine bestimmte Instanz von MS Word beenden.
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");
Zusammenfassung : Unabhängig davon, ob der Name .exe enthält, wird der Vorgang beendet. Sie müssen ".exe nicht vom Prozessnamen weglassen", es funktioniert zu 100%.
.Replace(".exe", "")Antwort auf die oberste Stimme würde dies mit viel weniger