मुझे आपको पृष्ठभूमि देने दें।संदेशबॉक्स को प्रोग्रामेटिक रूप से बंद करने के लिए बल
हम एक आवेदन (मध्यम आकार के) कि विभिन्न स्थानों पर MessageBox.Show (....) उपयोग कर रहा है (सैकड़ों में) है।
ये संदेश बॉक्स worklfow का हिस्सा हैं और, को सूचित करने की चेतावनी या एक उपयोगकर्ता से इनपुट लेने के लिए इस्तेमाल किया जा रहा। यदि कोई गतिविधि नहीं है तो आवेदन निश्चित समय के बाद स्वचालित रूप से लॉग ऑफ होना चाहिए। हमारे पास एक आवश्यकता है कि एप्लिकेशन को लॉग आउट करते समय, सत्र डेटा को साफ करने के लिए, दृश्यों को साफ़ करने और स्वयं को छिपाने के लिए, ताकि अगले लॉन्च में, स्टार्टअप प्रक्रिया को निष्पादित नहीं करना पड़ेगा जो कि समय के अनुसार महंगा है।
सब कुछ ठीक है, लेकिन एक परिदृश्य में काम कर रहा है जब वहाँ स्क्रीन पर कुछ संदेश बॉक्स है और उपयोगकर्ता कोई गतिविधि के कारण संदेश बॉक्स का जवाब देने और उसके बाद लॉग आउट करने के आवेदन करने के लिए बिना मशीन छोड़ दिया है। समस्या संदेश बॉक्स गायब नहीं होगा।
आवेदन छुपाते समय मैं खोला गया संदेशबॉक्स, यदि कोई हो, तो कैसे बंद कर सकता हूं?
धन्यवाद। एक धारणा है कि आप कोड है कि MessageBox.Show()
विधि कॉल कर रहा है संपादित कर सकते हैं के रूप में
यह कॉल हो सकता है कि कुंजी दर्ज करें या esc भेजें? :) – Reniuz
मैंने सोचा कि 'MessageBox.Show (...)' मोडल है, तो प्रोग्राम एक कुंजी कैसे भेज सकता है? क्या आप धागे/कार्यों का उपयोग कर रहे हैं? – Fischermaen
उत्तर के लिए धन्यवाद। अनुकूलित संदेश बॉक्स का उपयोग करके स्पष्ट करने के लिए बस एक विकल्प नहीं है क्योंकि पुनर्विक्रय काफी बड़ा है। ईएससी कुंजी भेजना भी सही नहीं है क्योंकि केवल सक्रिय एप्लिकेशन को कमांड प्राप्त होगा। मैं FINDWindow दृष्टिकोण का उपयोग कर रहा हूं जहां मुझे आईडी और संदेश बॉक्स कैप्शन पास करके Msgbox हैंडल मिल रहा है। हैंडलर प्राप्त करने के बाद मैं निम्नलिखित Win32 API का उपयोग कर बंद कर रहा हूं उदा। SendMessage (नया हैंडलरफ (शून्य, msgbxc हैंडलर), WM_CLOSE, IntPtr.Zero, IntPtr.Zero); SendMessage (नया हैंडलरफ (शून्य, msgbxc हैंडलर), WM_NCDESTROY, IntPtr.Zero, IntPtr.Zero); अभी तक यह ठीक काम कर रहा है। – NYK