2010-07-27 30 views
75

Làm cách nào tôi có thể tiêu diệ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++?Giết một số quy trình theo tên tệp .exe

+1

Nếu bạn cần quá trình giết bằng tên từng phần, hãy xem http://stackoverflow.com/questions/14632162/c-sharp-killing-a-process-by-a-part-of-its-name?rq=1 . –

Trả lời

153

nhanh trả lời:

foreach (var process in Process.GetProcessesByName("whatever")) 
{ 
    process.Kill(); 
} 

(rời khỏi .exe từ tên tiến trình)

+2

Thanx rất nhiều .. –

+2

nên làm gì nếu mã trên trả về Ngoại lệ (một quy trình 32 bit không thể truy cập các mô-đun của quy trình 64 bit)? – Manish

+32

Rời khỏi ".exe". Từ MSDN: "Tên quy trình là một tên thân thiện cho quá trình, chẳng hạn như Outlook, không bao gồm phần mở rộng .exe hoặc đường dẫn" – slater

13

Bạn có thể sử dụng Process.GetProcesses() để nhận các quy trình hiện đang chạy, sau đó Process.Kill() để hủy quá trình.

+6

Process.GetProcessesByName sẽ đơn giản hóa điều này. – ConsultUtah

+0

Thanx rất nhiều .. –

+0

nên làm gì nếu mã trên trả về Ngoại lệ (một quy trình 32 bit không thể truy cập các mô-đun của quy trình 64 bit)? – Manish

22

giải pháp của tôi là:

var chromeDriverProcesses = Process.GetProcesses(). 
           Where(pr => pr.ProcessName == "chromedriver"); 

foreach (var process in chromeDriverProcesses) 
{ 
    process.Kill(); 
} 
+0

bạn có thể sử dụng Chứa thay vì bằng –

+2

Hài hước ngẫu nhiên là, tôi đã tìm kiếm trong chủ đề này cho một giải pháp để giết chết các chromedriver. Phải là một vấn đề phổ biến. – kerl

-2
public void EndTask(string taskname) 
    { 
     string processName = taskname; 
     string fixstring = taskname.Replace(".exe", ""); 

     if (taskname.Contains(".exe")) 
     { 
      foreach (Process process in Process.GetProcessesByName(fixstring)) 
      { 
       process.Kill(); 
      } 
     } 
     else if (!taskname.Contains(".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 quá trình", Nó hoạt động 100%.

+0

đơn giản '.Replace (". Exe "," ")' trên câu trả lời 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 – AndrewK

+0

Toàn bộ ý tưởng của nó là để xem phương thức có hoặc không có .exe để mọi người có thể thấy nhiều cách xử lý nó ... Nó không có nghĩa là để sao chép và dán .... – user7993881

Các vấn đề liên quan