Win32 एपीआई का उपयोग कर विंडो को फ्रंट में सी # में लाएं

मैं एक ऐसे एप्लिकेशन को लिख रहा हूं जिसके लिए बाहरी ऐप की खिड़की को अग्रभूमि में लाने की ज़रूरत है, और जरूरी नहीं है कि फोकस चुराएं (वहां एक सेटिंग है जो उपयोगकर्ता को चोरी करने / चोरी करने के लिए टॉगल कर सकता है)।

Win32 एपीआई का उपयोग कर इस बारे में जाने का सबसे अच्छा तरीका क्या है? मैंने SetForeground() को आजमाया है लेकिन यह हमेशा फोकस चुराता है और लगातार काम नहीं करता है।

इस के बारे में जाने के लिए सबसे अच्छा तरीका क्या है? कोई विचार?

0
जोड़ा
विचारों: 2

5 उत्तर

क्या आपने SetWindowPos का उपयोग करने का प्रयास किया है। विंडोज़ में जेड-ऑर्डर को स्थानांतरित करने, आकार बदलने और सेट करने के लिए यह कैननिकल फ़ंक्शन है। एक SWP_NOACTIVATE ध्वज है जिसका आप उपयोग कर सकते हैं। http://msdn.microsoft.com/en पर देखें -US / पुस्तकालय / ms633545 (VS.85) .aspx । मैंने दूसरी प्रक्रिया से संबंधित खिड़की पर यह कोशिश नहीं की है, लेकिन शायद यह एक कोशिश के लायक है।

0
जोड़ा

फोकस चोरी न करने के लिए आप BringWindowToTop फ़ंक्शन को आजमा सकते हैं। मैंने इसका इस्तेमाल नहीं किया है, लेकिन ऐसा लगता है कि आप क्या खोज रहे हैं।

0
जोड़ा

SetForeGroundWindow, SetActiveWindow, और BringWindowToTop के बीच क्या अंतर है? ऐसा प्रतीत होता है जैसे वे सभी एक ही काम करते हैं।

एमएसडीएन के मुताबिक, SetForeGroundWindow खिड़की को सक्रिय करेगा और इसके लिए सीधे कीबोर्ड फोकस करेगा। जब आपकी प्रक्रिया पृष्ठभूमि में होती है तब भी यह काम करने का प्रयास करती है। SetActiveWindow SetForeGroundWindow जैसा ही काम करता है, लेकिन यदि आपका एप्लिकेशन सबसे पहला एप्लिकेशन नहीं है तो यह कुछ भी नहीं करता है। अंत में, BringWindowToTop केवल विंडो को शीर्ष पर लाता है, और कीबोर्ड फोकस नहीं बदलता है।

0
जोड़ा

SetWindowPos + SWP_NOACTIVATE नौकरी करता है।

0
जोड़ा

आप विंडो के HWND प्राप्त करने के लिए FindWindow का उपयोग कर सकते हैं, फिर Win32 API में प्राप्त BringWindowToTop फ़ंक्शन का उपयोग करें।

0
जोड़ा