2013-08-29 10 views
6

में एकल उदाहरण अनुप्रयोग मैं एक फ़ंक्शनिंग प्रोग्राम पर .exe फ़ाइल (अधिक विशेष रूप से कंसोल एप्लिकेशन) पर ध्यान केंद्रित करना चाहता हूं, जिसने पहली बार इसे लॉन्च किया था, लेकिन दूसरी बार निष्पादित होने पर (जब पहला अस्तित्व में था) यह फोकस कर सकता था पहला लॉन्च प्रोग्राम। क्या यह क्यूटी में बिल्कुल संभव है?क्यूटी

उत्तर

9

एकल उदाहरण के लिए, Run only one instance of a Qt application पढ़ें।

यदि आप विंडोज पर चल रहे हैं तो पोर्टेबिलिटी को खराब करना, एक और आम तरीका named pipe (या named mutex) बनाने के लिए है, जब एप्लिकेशन शुरू होता है, और बाहर निकलने से पहले इसे नष्ट कर देता है। यदि नामित पाइप पहले से मौजूद है, तो दूसरा उदाहरण पहले से चल रहा है। आप नामित पाइप को भी लिख सकते हैं कि दूसरे उदाहरण को अपनी खिड़की को सामने लाए, क्योंकि कंसोल एप्लिकेशन को विशेष रूप से इसका लाभ नहीं हो सकता है।

मौजूदा उदाहरण ध्यान केंद्रित करने के लिए एक अन्य तरीका है, तो इसके HWND, या अपने मंच पर इसी समारोह पर SetFocus फोन पहले से ही चल उदाहरण की खिड़की मिल रहा है।

+0

बहुत बहुत धन्यवाद, लेकिन मुझे _named_pipe_ समस्या के साथ नहीं मिला। – elgolondrino

+0

आप नामित पाइप बनाने के लिए ** [CreateNamedPipe] (http://msdn.microsoft.com/en-us/library/aa365150) ** पर कॉल करते हैं, और यदि यह विफल रहता है (वापसी मान 'INVALID_HANDLE_VALUE' है), इसका मतलब है एक और उदाहरण पहले से ही एक ही नाम के साथ एक पाइप बनाया है, इसलिए आप जानते हैं कि एक और उदाहरण पहले से चल रहा है। – jweyrich