2010-12-08 11 views
5

मेरे पास एक सी # एप्लिकेशन है जिसे मैं एक अलग प्रक्रिया से अच्छी तरह से बंद करने के लिए निर्देश देना चाहता हूं। मैं भी इसे अपनी मुख्य विंडो खोलने के लिए कहने में सक्षम होना चाहता हूं। मेरे पास इसके मुख्य विंडो हैंडल का संदर्भ है।एक अलग प्रक्रिया से विंडो को बंद करने के लिए कैसे करें

मुझे पता है कि मैं इसे रीमोटिंग या डब्ल्यूसीएफ जैसी विस्तृत योजनाओं का उपयोग करके कर सकता हूं। सवाल यह है कि मैं इसे इस तरह खिड़की संदेश, या सी # आवेदन में खिड़की

उत्तर

6

PInvoke SendMessage() एप्लिकेशन की मुख्य विंडो पर WM_CLOSE संदेश भेजने के लिए। इसे अपनी मुख्य विंडो खोलने के लिए कहा जा रहा है शायद यह काफी मुश्किल हो जाएगा, जब तक कि विंडो बनाई जाती है तब तक आप विंडो हैंडल प्राप्त नहीं कर सकते। प्रक्रिया। स्टार्ट() सामान्य तरीका होगा।

डब्ल्यूसीएफ के लिए कम लागत वाला विकल्प और पिनवोक से बेहतर एक नामित पाइप या ऐप के साथ इंटरफेस करने के लिए सॉकेट है। इसके लिए ऐप के स्रोत कोड को संशोधित करने में सक्षम होना आवश्यक है।

+1

अंत में, मैं इसके साथ गया, दृष्टिकोण, अन्य प्रश्नों में दो उपयोगी उत्तरों के साथ संयुक्त: 1. [wpf में विंडो संदेशों को कैसे प्रबंधित करें] (http://stackoverflow.com/questions/624367/how -to-handle-wndproc-message-in-wpf) 2. [सभी विंडो में एक संदेश कैसे प्रसारित करें, जिनमें बंद/अदृश्य शामिल हैं] (http://stackoverflow.com/questions/1777668/send- संदेश-टु-ए-windows-प्रक्रिया-नहीं अपनी मुख्य विंडो) –

2

मुझे लगता है कि आप शायद FindWindow इस्तेमाल कर सकते हैं सही चाइल्ड विंडो को खोजने के लिए की OnClose ईवेंट हैंडलर्स के रूप में सरल प्रक्रियाओं का उपयोग करके और फिर SendMessage कर सकते हैं या WM_CLOSE भेजने के लिए।

यहां एक और स्टैक ओवरफ्लो question है जो सी # में ऐसा करने से संबंधित है।

संपादित करें: हालांकि उस प्रश्न में अन्य उत्तर कहता है, आप इसके बजाय Process.CloseMainWindow का उपयोग करने में सक्षम हो सकते हैं।

0

मैं अपने लक्ष्य को इस तथ्य के "जागरूक" बना दूंगा कि कुछ अन्य प्रक्रिया खिड़की के बंद होने या खोलने या किसी भी कार्रवाई को ट्रिगर करना चाहती है। इसे लक्षित ऐप के एपीआई या सार्वजनिक तरीकों के माध्यम से किसी अन्य प्रक्रिया पर किसी भी विधि को कॉल करने के समान लागू किया जाना चाहिए। .. जब तक आप तीसरे पक्ष के अनुप्रयोगों के साथ कुछ करने की कोशिश नहीं कर रहे हैं, मुझे लगता है कि आपको उन्हें संदेशों को बंद या बंद करने के लिए सीधे भेजने का प्रयास नहीं करना चाहिए।