2011-08-16 9 views
5

पायथन में, मैं EnumWindows के माध्यम से शीर्ष-स्तरीय विंडो की गणना करता हूं, और मैं प्रक्रियाओं को EnumProcesses के माध्यम से समझाता हूं।मैं पाइथन में मुख्य विंडो के हैंडल कैसे प्राप्त कर सकता हूं?

फिर पायथन लिपि में, मैंने एक ही सूची में एक ही पिड से संबंधित सभी विंडो हैंडल रखे (मैंने इसे GetWindowThreadProcessId के माध्यम से किया)।

बाद में मुझे कुछ पता चला: 3 विंडो हैंडल हैं जो notepad.exe से संबंधित हैं, लेकिन मैं केवल एक टेक्स्ट फ़ाइल खोलता हूं।

क्यों?

इसके अलावा, मैंने टेक्स्ट विंडो को SetForegroundWindow के माध्यम से अग्रभूमि विंडो के रूप में सेट करने का प्रयास किया, मैंने इस कार्य में तीन विंडो हैंडल पास किए, और दो कार्य।

यह कैसे हो सकता है?

उत्तर

5

प्रक्रियाएं कभी-कभी अपने उद्देश्यों के लिए अदृश्य विंडो बनाती हैं। आपको उन्हें अनदेखा करना चाहिए (IsWindowVisible फ़ंक्शन का उपयोग करें)।

+0

इसे मिला। धन्यवाद – Alcott

4

इस तरह की चीजों की जांच करने के लिए आपका सबसे अच्छा दोस्त जासूस ++ है, जो विजुअल स्टूडियो के कई संस्करणों के साथ आता है, यदि आप इसे प्राप्त कर सकते हैं।

इसके अनुसार notepad.exe तीन शीर्ष स्तर के खिड़कियों बनाता है:

  1. दिखाई मुख्य विंडो, वर्ग के नाम "नोटपैड", ओवरलैप।
  2. एक छिपी हुई, अक्षम, पॉप-अप विंडो, कक्षा का नाम "एमएससीटीएफआईएम यूआई", कैप्शन "एम"।
  3. एक और छिपी हुई, अक्षम, पॉप-अप विंडो, कक्षा का नाम "आईएमई", कैप्शन "डिफ़ॉल्ट आईएमई"।

आईएमई (इनपुट विधि संपादक) को लागू करने के लिए दो छिपी हुई विंडो को नोटपैड द्वारा आंतरिक रूप से उपयोग किया जाता है, जीयूआई जटिल स्क्रिप्ट टाइप करने के लिए।

कई कार्यक्रम कई चीजों के लिए शीर्ष-स्तरीय छिपी हुई विंडो बनाते हैं। आप जो चाहते हैं उसके लिए, आप उन्हें सभी को अनदेखा कर सकते हैं और केवल दृश्यमान लोगों का उपयोग कर सकते हैं।

+0

आपका उत्तर बहुत स्पष्ट है, धन्यवाद।, – Alcott

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

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