द्वारा एचडब्ल्यूएन प्राप्त करें यदि मैं प्रक्रिया आईडी जानता हूं, तो मैं आवेदन के एचडब्ल्यूएनडी कैसे प्राप्त कर सकता हूं? कोई भी नमूना पोस्ट कर सकता है? मैं एमएसवी सी ++ 2010 का उपयोग कर रहा हूं। मुझे प्रक्रिया :: मेनविंडो हैंडल मिला लेकिन मुझे नहीं पता कि इसका उपयोग कैसे किया जाए।प्रक्रिया आईडी C++
उत्तर
HWND g_HWND=NULL;
BOOL CALLBACK EnumWindowsProcMy(HWND hwnd,LPARAM lParam)
{
DWORD lpdwProcessId;
GetWindowThreadProcessId(hwnd,&lpdwProcessId);
if(lpdwProcessId==lParam)
{
g_HWND=hwnd;
return FALSE;
}
return TRUE;
}
EnumWindows(EnumWindowsProcMy,m_ProcessId);
यह मेरे लिए पनीर की तरह काम करता है .. – Nadun
किसी को यह इंगित करने की आवश्यकता है कि 'पीआईडी' उसी विधि से संबंधित होना चाहिए (या इंटरैक्टिव उपयोगकर्ता/लॉगऑन सत्र) जिस प्रक्रिया को आप इस विधि से कहते हैं। अन्यथा 'EnumWindows' इसकी विंडो हैंडल की गणना नहीं करेगा। उदाहरण के लिए, आप इस विधि का उपयोग किसी सेवा से नहीं कर सकते हैं, या यदि प्रश्न में प्रक्रिया उपयोगकर्ता खाते पर एक अलग लॉग के तहत चलती है, या वर्कस्टेशन लॉक होने पर स्क्रीनसेवर के लिए एचडब्ल्यूएनडी पुनर्प्राप्त करने के लिए, – c00000fd
बस इस कोड को मुफ्त में परिवर्तित कर दिया गया है पास्कल और मेरे लिए पनीर की तरह काम करता है :) – Jako
आप इस MSDN article में उल्लिखित EnumWindows और GetWindowThreadProcessId() फ़ंक्शंस का उपयोग कर सकते हैं।
एक एकल पीआईडी (प्रक्रिया आईडी) एक से अधिक खिड़की (एचडब्ल्यूएनडी) से जुड़ा जा सकता है। उदाहरण के लिए यदि एप्लिकेशन कई विंडोज़ का उपयोग कर रहा है।
निम्नलिखित कोड किसी दिए गए पीआईडी प्रति सभी विंडोज़ के हैंडल का पता लगाता है।
void GetAllWindowsFromProcessID(DWORD dwProcessID, std::vector <HWND> &vhWnds)
{
// find all hWnds (vhWnds) associated with a process id (dwProcessID)
HWND hCurWnd = NULL;
do
{
hCurWnd = FindWindowEx(NULL, hCurWnd, NULL, NULL);
DWORD dwProcessID = 0;
GetWindowThreadProcessId(hCurWnd, &dwProcessID);
if (dwProcessID == dwProcessID)
{
vhWnds.push_back(hCurWnd); // add the found hCurWnd to the vector
wprintf(L"Found hWnd %d\n", hCurWnd);
}
}
while (hCurWnd != NULL);
}
एक प्रक्रिया 1 विंडो तक सीमित नहीं है। – chris
एक प्रक्रिया में कई खिड़कियां हो सकती हैं, और इसमें कई hwnds हैं। –
तो, मैबी सभी एचडब्ल्यूएनडी प्राप्त करना और इन्हें चुनना संभव है, जिनके पास यह प्रक्रिया आईडी है? – Luke