Làm cách nào tôi có thể giết một số quy trình hoạt động bằng cách tìm kiếm tên tệp .exe của chúng trong C # .NET hoặc C ++?
Làm cách nào tôi có thể giết một số quy trình hoạt động bằng cách tìm kiếm tên tệp .exe của chúng trong C # .NET hoặc C ++?
Câu trả lời:
Câu trả lời nhanh:
foreach (var process in Process.GetProcessesByName("whatever"))
{
process.Kill();
}
(bỏ .exe từ tên tiến trình)
Contains("Spotify"))
giết chết tất cả các trường hợp Spotify
. Tôi muốn giết một ví dụ cụ thể Spotify
.
Giải pháp của tôi là sử dụng Process.GetProcess () để liệt kê tất cả các quy trình.
Bằng cách lọc chúng để chứa các quy trình tôi muốn, sau đó tôi có thể chạy phương thức Process.Kill () để ngăn chặn chúng:
var chromeDriverProcesses = Process.GetProcesses().
Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'
foreach (var process in chromeDriverProcesses)
{
process.Kill();
}
Cập nhật:
Trong trường hợp nếu muốn sử dụng async
phương pháp tiếp cận với một số phương thức hữu ích gần đây từ C# 8
( Async Enumerables ), thì hãy kiểm tra điều này:
const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
.Where(pr => pr.ProcessName == processName)
.ToAsyncEnumerable()
.ForEachAsync(p => p.Kill());
Lưu ý: sử dụng
async
các phương thức không phải lúc nào cũng có nghĩa là mã sẽ chạy nhanh hơn, nhưng ít nhất nó sẽ không lãng phí thời gian của CPU và sẽ ngăn luồng tiền cảnh bị treo trong khi thực hiện các thao tác. Trong mọi trường hợp, bạn cần suy nghĩ về phiên bản bạn có thể muốn.
Bạn có thể sử dụng Process.GetProcesses()
để có được các quy trình hiện đang chạy, sau đó Process.Kill()
để giết một quy trình.
Bạn có thể Giết một phiên bản cụ thể của 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");
Tóm tắt : không có vấn đề nếu tên chứa .exe, quá trình sẽ kết thúc. Bạn không cần phải "rời khỏi .exe từ tên tiến trình", Nó hoạt động 100%.
.Replace(".exe", "")
câu trả lời đơn giản được bình chọn hàng đầu sẽ làm điều này với mã ít phức tạp hơn và không cần thiết