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 async
Ansatz 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
async
Methoden 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