2012-08-14 106 views
5

如何根據名稱獲取正在運行的進程的路徑?例如,我知道有一個名爲「notepad」的進程正在運行,我想要獲取它的路徑。如何在沒有循環所有其他進程的情況下獲得路徑?按名稱獲取正在運行的進程的路徑

不是這樣!

using System.Diagnostics; 

foreach (Process PPath in Process.GetProcesses()) 
{ 
    if (PPath.ProcessName.ToString() == "notepad") 
    { 
     string fullpath = PPath.MainModule.FileName; 
     Console.WriteLine(fullpath); 
    } 
} 

回答

8

嘗試是這樣的方法,它使用GetProcessesByName method

public string GetProcessPath(string name) 
{ 
    Process[] processes = Process.GetProcessesByName(name); 

    if (processes.Length > 0) 
    { 
     return processes[0].MainModule.FileName; 
    } 
    else 
    { 
     return string.Empty; 
    } 
} 

但是要記住,多個進程可以有相同的名字,所以你仍然可能需要做一些挖掘。我只是在這裏回到第一個人的路上。

+0

你的意思是這樣(字符串FULLPATH = System.Diagnostics.Process.GetProcessesByName (「notepad」)。ToString();)不,我沒有。謝謝 – 2012-08-14 21:47:23

+0

我修改了我的答案,使其更清楚我的意思。 – FishBasketGordo 2012-08-14 21:51:52

2

有一種方法GetProcessesByName是.NET 2.0中存在:

foreach (Process PPath in Process.GetProcessesByName("notepad")) 
{ 
    string fullpath = PPath.MainModule.FileName; 
    Console.WriteLine(fullpath); 
} 
1

有真的,你可以採取兩種方法。

您可以通過名字做的過程:

Process result = Process.GetProcessesByName("Notepad.exe").FirstOrDefault(); 

,或者你可以做你做什麼,但使用LINQ

Process element = (from p in Process.GetProcesses() 
        where p.ProcessName == "Notepad.exe" 
        select p).FirstOrDefault(); 
+0

.NET 2.0沒有LINQ。 – FishBasketGordo 2012-08-14 22:01:14

相關問題