(सभी मतलब प्रासंगिक प्रौद्योगिकी के साथ फिर से टैग कर: मैं कौन सा वे कर रहे हैं :)विंडोज़: सभी दृश्यमान विंडो की सूची कैसे प्राप्त करें?
मैं शायद और अधिक विस्तृत सवाल, के बारे में विशिष्ट विवरण के साथ बाद में आते हैं, लेकिन जाएगा पता नहीं है अब के लिए मैं मैं "बड़ी तस्वीर" को समझने की कोशिश कर रहा हूं: मैं विंडोज़ पर "वास्तविक दृश्य विंडो" को गिनने का एक तरीका ढूंढ रहा हूं। "वास्तविक दृश्य विंडो" से मेरा मतलब है कि: उपयोगकर्ता "विंडो" कहलाएगा। मुझे ज़ेड-ऑर्डर में इन सभी दृश्यमान विंडो की सूची प्राप्त करने का एक तरीका चाहिए।
ध्यान दें कि मैं वास्तव में ऐसा करने की आवश्यकता है। मैंने इसे ओएस एक्स पर पहले ही कर लिया है (जहां यह एक असली सिरदर्द है, खासकर यदि आप ओएस एक्स 10.4 का समर्थन करना चाहते हैं, क्योंकि ओएस एक्स में सुविधाजनक विंडोज एपीआई नहीं है) और अब मुझे इसे विंडोज के तहत करना है।
यहाँ एक उदाहरण है, मान लीजिए वहाँ इस तरह स्क्रीन पर तीन दिखाई खिड़कियां हैं,: फिर अगर
windows B is at (210,40)
windows A is at (120,20)
windows C is at (0,0)
:
+------------------------------------------+
| |
| +=============+ |
| | | |
| | A +--------------------------+
| | | |
| C | | B |
| | +--------------------------+
| | | |
+-----------| |----------------+
| |
+-------------+
तब मैं इस प्रकार की सूची वापस प्राप्त करने की आवश्यकता उपयोगकर्ता (या ओएस) विंडो ए को सामने लाता है, यह बन जाता है:
+------------------------------------------+
| |
| +=============+ |
| | | |
| | A |---------------------+
| | | |
| C | | B |
| | |---------------------+
| | | |
+-----------| |----------------+
| |
+-------------+
और मैं मिल (आदर्श) एक कॉलबैक मुझे दे रही है यह:
windows A is at (120,20)
windows B is at (210,40)
windows C is at (0,0)
ओएस एक्स के तहत ऐसा करने से आश्चर्यजनक अजीब हैक्स के उपयोग की आवश्यकता (चालू करने के लिए उपयोगकर्ता की अनिवार्यता की तरह "सहायक उपकरण के लिए पहुँच सक्षम करें"!), लेकिन मैं इसे ओएस एक्स के तहत किया गया है और यह काम करता है (ओएस एक्स के तहत, जब भी कुछ खिड़की में परिवर्तन होता है तो मैं कॉलबैक प्राप्त नहीं करता था, इसलिए मैं मतदान कर रहा हूं, लेकिन मुझे इसे काम करने के लिए मिला)।
अब मैं Windows के तहत ऐसा करना चाहते हैं (मैं वास्तव में इसके बारे में, कोई सवाल ही नहीं करते हैं) और मैं कुछ सवाल है:
यह किया जा सकता है?
क्या अच्छी तरह से विंडोज एपीआई दस्तावेज (और उनके चश्मा के अनुसार काम कर रहे हैं) ऐसा करने की इजाजत दे रहे हैं?
क्या हर बार एक विंडो में बदलाव करने के लिए कॉलबैक पंजीकृत करना आसान है? (यदि इसका आकार बदल दिया गया है, स्थानांतरित किया गया है, वापस/सामने लाया गया है या यदि कोई नई विंडो पॉप-अप, आदि)
गॉर्च क्या होगा?
मैं जानता हूँ कि इस सवाल का जिसके कारण मैं के रूप में स्पष्ट रूप से संभव के रूप में मेरी समस्या का वर्णन करने के (अच्छा ASCII आर्ट जिसके लिए आप इस वोट दें सकता सहित) की कोशिश की है, विशिष्ट नहीं है: अब मैं कम से देख रहा हूँ के लिए बड़ी तस्वीर"। मैं जानना चाहता हूं कि विंडोज़ के तहत ऐसी चीज क्या कर रही है।
बोनस प्रश्न: कल्पना करें कि आपको एक छोटे से लिखने की आवश्यकता होगी। EXE स्क्रीन पर विंडो बदलने पर हर बार विंडोज़ नाम/स्थिति/आकार को अस्थायी फ़ाइल में लिखना होगा, इस तरह का कोई प्रोग्राम आपके पास कितना समय लगेगा पसंद की भाषा और आपको इसे कब लिखना होगा?
कोई नहीं? पहले से ही +1 अपवॉट और 1 पसंदीदा ... :) – NoozNooz42
ठीक है, मुझे लगता है कि आप ZW ऑर्डर में सभी विंडो को गिनाने के लिए FindWindowEx से शुरू करेंगे और फिर विंडो शैली प्राप्त करने के लिए GetWindowLong का उपयोग करें। जाहिर है आप केवल WS_VISIBLE के साथ खिड़कियों पर विचार करेंगे, और शायद WS_CAPTION या कुछ। – Luke
क्या नेट फ्रेमवर्क एक विकल्प है? मेरे पास इसके लिए एक आसान समाधान है, दस सेकंड की तरह लगता है। ASCII कला के लिए – Cyclone