मेरे पास एक ऐसा एप्लिकेशन है जो किसी अन्य एप्लिकेशन से डेटा भेजने और प्राप्त करने के लिए सॉकेट कनेक्शन का उपयोग करता है। सॉकेट बनाने के दौरान यह बंदरगाह 49 9 8 का उपयोग करता है।एप्लिकेशन का केवल एक उदाहरण कैसे चलाएं
यही वह जगह है जहां मेरी समस्या झूठ बोलती है। एक बार जब मैं अपना आवेदन शुरू करता हूं तो सॉकेट बंदरगाह 49 9 8 का उपयोग शुरू करता है। इसलिए यदि मैं एप्लिकेशन को फिर से निष्पादित करना चाहता हूं तो मुझे सॉकेट बाइंडिंग त्रुटि मिलती है।
तो मैं अपने आवेदन उदाहरण को एक में सीमित करना चाहता हूं। इसका अर्थ यह है कि यदि एप्लिकेशन पहले से चल रहा है और कोई एक्सई या शॉर्टकट आइकन पर क्लिक करके एप्लिकेशन को फिर से चलाने का प्रयास करता है तो उसे प्रोग्राम नहीं चलाया जाना चाहिए, इसके बजाय इसे मौजूदा एप्लिकेशन को शीर्ष पर ले जाना चाहिए।
पहले OpenMutex() को कॉल करके, आपके पास दौड़ की स्थिति है। पहले CreateMutex/Ex() को कॉल करें। यह आपको बताएगा कि म्यूटेक्स पहले से मौजूद है या नहीं। OpenMutex() को केवल कॉल करें यदि CreateMutex() किसी ERROR_ACCESS_DENIED त्रुटि के साथ विफल रहता है। –
Win7 + पर यह काम कैसे करें इस पर कोई सुझाव? वैश्विक \ x mutexes अलग-अलग उपयोगकर्ता लॉगऑन सत्रों से एक दूसरे को नहीं देखता है ... –
@ रोमनप्लेसिल वे वास्तव में करते हैं, आपने कुछ गलत किया होगा – paulm