C # .NET veya C ++ 'da .exe dosya adlarını arayarak bazı etkin işlemleri nasıl öldürebilirim?
C # .NET veya C ++ 'da .exe dosya adlarını arayarak bazı etkin işlemleri nasıl öldürebilirim?
Yanıtlar:
Hızlı cevap:
foreach (var process in Process.GetProcessesByName("whatever"))
{
process.Kill();
}
(işlem adından .exe'yi bırakın)
Contains("Spotify"))
tüm örneklerini öldürür Spotify
. Belirli bir örneğini öldürmek istiyorum Spotify
.
Çözümüm, tüm işlemleri listelemek için Process.GetProcess () kullanmaktır .
İstediğim işlemleri içerecek şekilde filtreleyerek, onları durdurmak için Process.Kill () yöntemini çalıştırabilirim :
var chromeDriverProcesses = Process.GetProcesses().
Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'
foreach (var process in chromeDriverProcesses)
{
process.Kill();
}
Güncelleme:
async
Yaklaşımı C# 8
( Async Enumerables ) ' dan bazı yararlı yeni yöntemlerle kullanmak istiyorsanız , şunu kontrol edin:
const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
.Where(pr => pr.ProcessName == processName)
.ToAsyncEnumerable()
.ForEachAsync(p => p.Kill());
Not:
async
yöntemlerin kullanılması her zaman kodun daha hızlı çalışacağı anlamına gelmez, ancak en azından CPU zamanını boşa harcamayacak ve işlemleri yaparken ön plan iş parçacığının takılmasını önleyecektir. Her durumda, hangi sürümü isteyebileceğinizi düşünmeniz gerekir.
Şu Process.GetProcesses()
anda çalışan işlemleri almak ve ardından Process.Kill()
bir işlemi sonlandırmak için kullanabilirsiniz.
MS Word'ün belirli bir örneğini öldürebilirsiniz.
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");
Özet : adın .exe içermesi önemli değil, işlem sona erecektir. ".Exe'yi işlem adından ayırmanıza" gerek yoktur,% 100 çalışır.
.Replace(".exe", "")
en çok oylanan cevapta basit bir cevap, bunu çok daha az karmaşık ve gereksiz kodla