2013-08-12 12 views
19

मुझे प्रक्रिया की एक विशिष्ट पीआईडी ​​प्राप्त करने में कोई समस्या है, इस प्रक्रिया के साथ समस्या यह है कि यह एक छिपी हुई प्रक्रिया है, यह कार्य प्रबंधक/शक्तिशक्ति पर पूरी तरह छिपा हुआ नहीं है।विंडो के हैंडल द्वारा प्रक्रिया आईडी खोजें

जो मैंने अभी तक किया है, इस प्रक्रिया का मुख्य विंडो हैंडल है, सवाल यह है कि, मैं इसे कैसे प्राप्त कर सकता हूं।

जो मैं करने की कोशिश कर रहा हूं वह इस प्रक्रिया की याददाश्त को पढ़ना और इसे संपादित करना है, लेकिन मुझे लगता है कि पीआईडी ​​के बिना ऐसा नहीं कर सकता (क्योंकि मुझे स्मृति में इसका मूल पता प्राप्त करने की आवश्यकता है)।

तो, अगर किसी के पास कोई कामकाज या मेरे लिए कुछ है, तो यह बहुत अच्छा होगा।

पीएस: यह प्रक्रिया Process.GetProcesses() में दिखाई नहीं देती है।

ty!

+0

क्या आपको प्रक्रिया आईडी की आवश्यकता है ...? – Aravind

उत्तर

34

आप निम्न Windows API का उपयोग कर सकते हैं:

[DllImport("user32.dll", SetLastError=true)] 
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint processId); 

आप HWND में गुजरती हैं और बाहर पैरामीटर का उपयोग पीआईडी ​​वापस जाने के लिए।

आप MSDN पर यहाँ इस समारोह के बारे में अधिक पढ़ सकते हैं - http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522(v=vs.85).aspx

+0

धन्यवाद बहुत दोस्ताना, एक आकर्षण की तरह काम कर रहा है :) –

7

आप पी उपयोग करने के लिए/Windows API के साथ आह्वान की आवश्यकता होगी।

तरह

[DllImport("User32.dll")] 
static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); 

अपनी कक्षा में एक समारोह घोषित और फिर अपने वर्ग में यह कहते हैं।

PInvoke देखें।

+0

इसे pinvoke.net से मिला, लेकिन आप सही हैं! –

+0

यह वास्तव में 0 देता है, मेरे लिए काम नहीं कर रहा है लेकिन जवाब देने के लिए धन्यवाद। –

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