Bagaimana cara mematikan beberapa proses aktif dengan mencari nama file .exe di C # .NET atau C ++?
Bagaimana cara mematikan beberapa proses aktif dengan mencari nama file .exe di C # .NET atau C ++?
Jawaban:
Jawaban cepat:
foreach (var process in Process.GetProcessesByName("whatever"))
{
process.Kill();
}
(tinggalkan .exe dari nama proses)
Contains("Spotify"))
membunuh semua contoh Spotify
. Saya ingin membunuh contoh tertentu dari Spotify
.
Solusi saya adalah menggunakan Process.GetProcess () untuk mendaftar semua proses.
Dengan memfilternya agar berisi proses yang saya inginkan, saya kemudian dapat menjalankan metode Process.Kill () untuk menghentikannya:
var chromeDriverProcesses = Process.GetProcesses().
Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'
foreach (var process in chromeDriverProcesses)
{
process.Kill();
}
Memperbarui:
Jika ingin menggunakan async
pendekatan dengan beberapa metode terbaru yang berguna dari C# 8
( Async Enumerables ), periksa ini:
const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
.Where(pr => pr.ProcessName == processName)
.ToAsyncEnumerable()
.ForEachAsync(p => p.Kill());
Catatan: menggunakan
async
metode tidak selalu berarti kode akan berjalan lebih cepat, tetapi setidaknya itu tidak akan membuang waktu CPU dan akan mencegah thread latar depan menggantung saat melakukan operasi. Bagaimanapun, Anda perlu memikirkan versi apa yang mungkin Anda inginkan.
Anda dapat menggunakan Process.GetProcesses()
untuk mendapatkan proses yang sedang berjalan, kemudian Process.Kill()
menghentikan proses.
Jika Anda memiliki ID proses ( PID
), Anda dapat menghentikan proses ini sebagai berikut:
Process processToKill = Process.GetProcessById(pid);
processToKill.Kill();
Anda dapat Membunuh contoh tertentu dari 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");
Ringkasan : tidak peduli jika namanya mengandung .exe, prosesnya akan berakhir. Anda tidak perlu "meninggalkan .exe dari nama proses", Ini berfungsi 100%.
.Replace(".exe", "")
jawaban sederhana di atas yang dipilih akan melakukan ini dengan kode yang jauh lebih berbelit-belit dan tidak perlu