Comment puis-je tuer certains processus actifs en recherchant leurs noms de fichiers .exe dans C # .NET ou C ++?
Comment puis-je tuer certains processus actifs en recherchant leurs noms de fichiers .exe dans C # .NET ou C ++?
Réponses:
Réponse rapide:
foreach (var process in Process.GetProcessesByName("whatever"))
{
process.Kill();
}
(laissez .exe hors du nom du processus)
Contains("Spotify"))
tue toutes les instances de Spotify
. Je veux tuer une instance particulière de Spotify
.
Ma solution est d'utiliser Process.GetProcess () pour lister tous les processus.
En les filtrant pour contenir les processus que je veux, je peux ensuite exécuter la méthode Process.Kill () pour les arrêter:
var chromeDriverProcesses = Process.GetProcesses().
Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'
foreach (var process in chromeDriverProcesses)
{
process.Kill();
}
Mettre à jour:
Si vous souhaitez utiliser une async
approche avec des méthodes récentes utiles des C# 8
( Async Enumerables ), vérifiez ceci:
const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
.Where(pr => pr.ProcessName == processName)
.ToAsyncEnumerable()
.ForEachAsync(p => p.Kill());
Remarque: l'utilisation de
async
méthodes ne signifie pas toujours que le code s'exécutera plus rapidement, mais au moins cela ne fera pas perdre de temps au processeur et empêchera le thread de premier plan de se bloquer pendant les opérations. Dans tous les cas, vous devez réfléchir à la version que vous pourriez souhaiter.
Vous pouvez utiliser Process.GetProcesses()
pour obtenir les processus en cours d'exécution, puis Process.Kill()
pour tuer un processus.
Vous pouvez tuer une instance spécifique 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");
Résumé : peu importe si le nom contient .exe, le processus se terminera. Vous n'avez pas besoin de "quitter .exe du nom du processus", cela fonctionne à 100%.
.Replace(".exe", "")
réponse votée en tête le ferait avec un code beaucoup moins compliqué et inutile