मैं Vista के लिए एक alt-tab प्रतिस्थापन बना रहा हूं लेकिन मुझे सभी सक्रिय प्रोग्राम सूचीबद्ध करने में कुछ समस्याएं हैं।alt-tab की तरह विंडोज़
मैं विंडोज की सूची प्राप्त करने के लिए EnumWindows का उपयोग कर रहा हूं, लेकिन यह सूची बहुत बड़ी है। इसमें लगभग 400 आइटम होते हैं जब मेरे पास केवल 10 खिड़कियां खुलती हैं। ऐसा लगता है कि हर एक नियंत्रण और कई अन्य सामानों के लिए एक झुकाव है।
इसलिए मुझे इस सूची को किसी भी तरह फ़िल्टर करना होगा, लेकिन मैं इसे बिल्कुल ठीक करने के लिए प्रबंधित नहीं कर सकता जैसे कि alt-tab करता है।
यह वह कोड है जिसका उपयोग मैं अभी सूची को फ़िल्टर करने के लिए करता हूं। यह बहुत अच्छी तरह से काम करता है, लेकिन मुझे विजुअल स्टूडियो में अलग-अलग टूल-विंडोज जैसी कुछ अवांछित खिड़कियां मिलती हैं और मुझे आईट्यून्स और वॉरक्राफ्ट 3 जैसी विंडोज़ भी याद आती है।
private bool ShouldWindowBeDisplayed(IntPtr window)
{
uint windowStyles = Win32.GetWindowLong(window, GWL.GWL_STYLE);
if (((uint)WindowStyles.WS_VISIBLE & windowStyles) != (uint)WindowStyles.WS_VISIBLE ||
((uint)WindowExStyles.WS_EX_APPWINDOW & windowStyles) != (uint)WindowExStyles.WS_EX_APPWINDOW)
{
return true;
}
return false;
}
ध्यान दें कि यह कार्यान्वयन रेमंड के ब्लॉग पोस्ट में वर्णित 'WS_EX_TOOLWINDOW' और' WS_EX_APPWINDOW' विस्तारित शैलियों का सम्मान नहीं करता है। –
यहां इस विधि के आधार पर एक और पूर्ण और मजबूत उदाहरण है https://github.com/christianrondeau/GoToWindow/blob/e41b822e7254fdc40a40fbbeec251e6ffc1959f8/GoToWindow.Api/WindowsListFactory.cs#L45 यह एक वैकल्पिक alt-tab उपयोगिता से है, जो दिखता है बिल्कुल नियमित alt-tab मेनू क्या करता है। – blade