2012-08-14 9 views
5

मैं नाम से चल रही प्रक्रिया का मार्ग कैसे प्राप्त कर सकता हूं? उदाहरण के लिए, मुझे पता है कि "नोटपैड" नामक एक प्रक्रिया है, और मैं इसका मार्ग प्राप्त करना चाहता हूं। अन्य सभी प्रक्रियाओं के माध्यम से लूपिंग के बिना पथ कैसे प्राप्त करें?नाम से चल रहे प्रक्रिया का मार्ग प्राप्त करना

इस तरह से नहीं!

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 कर सकता उपयोग LINQ ("नोटपैड")। ToString();) नहीं मैंने नहीं किया। धन्यवाद –

+0

मैंने अपना जवाब संशोधित करने के लिए थोड़ा सा स्पष्ट करने के लिए संशोधित किया। – FishBasketGordo

2

एक विधि GetProcessesByName कि नेट 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(); 

या आप आप क्या करते हैं लेकिन

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

.NET 2.0 में LINQ नहीं है। – FishBasketGordo

संबंधित मुद्दे