एक WPF विंडो को हैंडल ढूँढना


109

विंडोज़ के रूपों में एक प्रॉपर्टी win1 थी। हालांकि, अगर मुझे याद है, तो मुख्य विंडो हैंडल को संभालता है?

क्या WPF विंडो का हैंडल पाने का एक समान तरीका है?

मुझे निम्नलिखित कोड ऑनलाइन मिला,

IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;

लेकिन मुझे नहीं लगता कि इससे मुझे मदद मिलेगी क्योंकि मेरे आवेदन में कई विंडो हैं।

धन्यवाद!!


24
आइए मैं आपको कुछ दोस्ताना सलाह देता हूं, इवान। कार्गो पंथ प्रोग्रामिंग मत करो! आपके द्वारा ऑनलाइन पाए गए कोड को भंग करें। आप स्पष्ट रूप से देख सकते हैं कि यह Application.Current.MainWindow से गुजरता है, और इससे आप इसका कारण यह कर सकते हैं कि इसे एक अलग विंडो के संदर्भ में भेजकर, आपको अपना उत्तर मिल जाएगा। मैंने कभी भी WindowInteropHelper का उपयोग नहीं किया है, लेकिन अभी भी इस सवाल का जवाब देने में सक्षम था, बस इसे समझ लेना चाहिए।
ग्रेगरी हिगले

1
तुम सही हो, धन्यवाद! आज मैं थक गया हूँ :)।
इवान

5
कोई दिक्कत नहीं है! और मैं आलोचना के रूप में इसका मतलब नहीं था, बस मददगार बनने के लिए। हम सब अब और फिर थोड़ा माल-खेती कर रहे हैं। :)
ग्रेगरी हिगले

जवाबों:


142

खैर, पास करने के बजाय Application.Current.MainWindow, जो भी आप चाहते हैं खिड़की के लिए एक संदर्भ पास करें: new WindowInteropHelper(this).Handleऔर इसी तरह।


मुझे अभी पता चला है कि FileSave आम संवाद एक शीर्ष-स्तरीय विंडो के लिए एक संदर्भ लेता है, इसलिए आप पास कर सकते हैं, उदाहरण के लिए, एप्लिकेशन के मेनवॉन्ड का संदर्भ। जब आपको वास्तव में इसकी आवश्यकता हो, तब इंटरोप सेवाओं को सहेजें।
डेविड ए। ग्रे

39

बस WindowsInteropHelper वर्ग के साथ अपनी विंडो का उपयोग करें:

// ... Window myWindow = get your Window instance...
IntPtr windowHandle = new WindowInteropHelper(myWindow).Handle;

अभी, आप एप्लिकेशन की मुख्य विंडो के लिए पूछ रहे हैं, जिनमें से हमेशा एक होगी। आप किसी भी विंडो पर एक ही तकनीक का उपयोग कर सकते हैं, बशर्ते यह एक System.Windows.Window व्युत्पन्न विंडो वर्ग है।



3

यदि आप Windowकिसी कारण से अपने सभी एप्लिकेशन के विंडो हैंडल चाहते हैं , तो आप Application.Windowsसभी विंडोज़ पर पाने के लिए संपत्ति का उपयोग कर सकते हैं और फिर WindowInteropHandlerउनके हैंडल पर प्राप्त करने के लिए उपयोग कर सकते हैं जैसा कि आप पहले ही प्रदर्शित कर चुके हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.