विंडोज़ पर यह आसान है। पाइथन के साथ बस अपने प्रोग्राम को pythonw के साथ चलाएं और कोड पृष्ठभूमि में निष्पादित किया जाएगा।पायथन - मैक ओएस एक्स पर जीयूआई एप्लिकेशन से डेमॉन कैसे बनाया जाए?
तो, जो चीज़ मैं प्राप्त करना चाहता हूं उसे आसानी से व्यवस्थित किया जाता है।
मेरे पास एक ऐसा एप्लिकेशन है जो वास्तव में भूमिगत सामान करने वाली सेवा है। लेकिन इस सेवा को एक नियंत्रण कक्ष की जरूरत है।
तो, विंडोज़ पर मैं एक जीयूआई बनाने के लिए wxPython का उपयोग करता हूं, यहां तक कि कुछ WX सामान भी आवश्यक सेवा प्रदान करने के लिए, और जब उपयोगकर्ता समायोजन के साथ किया जाता है तो वह मुख्य विंडो पर छुपाएं और दिखाएं (झूठा) कहलाता है।
इस प्रकार जीयूआई गायब हो जाता है और सेवा पृष्ठभूमि में अपना काम जारी रखती है। उपयोगकर्ता हमेशा एक हॉटकी का उपयोग करके इसे वापस ला सकता है।
समस्या यह है कि मैक ओएस एक्स पर यह रणनीति केवल कुछ डिग्री के लिए काम करती है।
जब wx.Frame.Show (झूठी) कहा जाता है, तो विंडो मेनू मेनू के साथ गायब हो जाती है और सेवा ठीक काम करती है, लेकिन एप्लिकेशन अभी भी वहां दिखाई देता है।
आप इस तथ्य पर ध्यान दिए बिना इस पर स्विच कर सकते हैं कि आप इसके साथ कुछ भी नहीं कर सकते हैं। यह अभी भी डॉक इत्यादि में मौजूद है।
ऐसा तब होता है जब प्रोग्राम पायथन या पायथन या जब यह Py2App के साथ बंडल किया जाता है।
कोई फर्क नहीं पड़ता कि मैं क्या करता हूं, आइकन वहां रहता है।
कुछ चाल होनी चाहिए जो प्रोग्रामर को इस शरारती आइकन को हटाने की अनुमति देता है और इस प्रकार वह गरीब छोटे उपयोगकर्ता को परेशान करना बंद कर देता है जब वह परेशान नहीं होना चाहती।
छिपाने की खिड़की स्पष्ट रूप से पर्याप्त नहीं है। कोई भी चाल जानता है?
एनबी .: मैं वास्तव में जिस तरह से ऊपर वर्णित हूं और दो अलग प्रक्रियाओं और आईपीसी के साथ गड़बड़ नहीं करना चाहता हूं।
संपादित करें:
How to hide application icon from Mac OS X dock
http://codesorcery.net/2008/02/06/feature-requests-versus-the-right-way-to-do-it
पिछले लिंक इसका इस्तेमाल करने के लिए है करने के लिए उचित तरीके के अनुसार:
ज्यादा खुदाई के बाद मैं इन पाया:
[NSApp setActivationPolicy: NSApplicationActivationPolicyAccessory];
या
[NSApp setActivationPolicy: NSApplicationActivationPolicyProhibited];
तो मैं क्या चाहते हैं (क्रम अग्रभूमि करने के लिए पृष्ठभूमि से स्विच और पीछे) संभव है।
लेकिन पाइथन से इसे कैसे करें ???
स्थिरांक: एनएसपीप्लिकेशन एक्टिवेशन पॉलिसीप्रोबिटेड और एनएसएप्लिकेशन एक्टिवेशन पॉलिसी एक्सेसरी ऐपकिट में मौजूद है, लेकिन मुझे सेट एप्प्लिकेशन एक्टिवेशन पॉलिसी फ़ंक्शन कहीं भी नहीं मिल रहा है।
एनएसएपीपी() में यह नहीं है।
मुझे पता है कि, ctypes साथ ObjC dylib लोड हो रहा है NSApp को सौंपने और भेज कर यह करने का एक तरीका है "setApplicationActivationPolicy: <constant_value>" है, लेकिन मैं नहीं जानता कि कितना होगा wx.App के साथ इस गंदगी() । और यह कुछ ऐसा करने के लिए थोड़ा सा काम है जो पहले से ही उपलब्ध होना चाहिए।
मेरे अनुभव में, एनएसएपीपी() और wx.App() एक ही समय में सक्रिय एक-दूसरे को बहुत पसंद करते हैं।
शायद हम एनएसएपीपी() उदाहरण प्राप्त कर सकते हैं कि Wx किसी भी तरह से उपयोग कर रहा है और Wx के प्रतिनिधि का उपयोग कर रहा है ???
कृपया याद रखें, एजेंट के रूप में शुरू करने और अग्रभूमि में स्विच करने या एकाधिक प्रक्रियाओं को चलाने और आईपीसी करने के लिए पहले से ही समाधान सुझाए गए हैं और मेरे मामले में आईपीसी करना बहुत अवांछनीय है।
तो, आदर्श रूप से, setAplicationActivationPolicy का उपयोग करना मेरा लक्ष्य है, लेकिन कैसे? (सरल और आसान और wx.App() कृपया कोई मैसअप नहीं।)
कोई विचार ???
पीएस आप 'info.plist' समाधान क्यों नहीं करते? –
क्योंकि इसका मतलब है कि प्रक्रिया पृष्ठभूमि में शुरू होती है और मैं जो भी जीयूआई दिखाना चाहता हूं वह ठीक रहेगा, लेकिन मैं फोकस खोने के बाद इस ऐप पर वापस नहीं जा पाऊंगा, यानी डॉक आइकन मौजूद नहीं होगा। इसे TransformProcessType() का उपयोग करके ठीक किया जा सकता है, जिसे मैं नहीं जानता कि पाइथन से फिर से कॉल कैसे करें, और जहां यह छिपा हुआ है, अगर यह बिल्कुल लागू किया गया है। लेकिन, अगर मैं ऐसा करता हूं, तो इसका मतलब यह होगा कि मुझे 2 प्रक्रियाएं होनी चाहिए। एक डिमन, जो डिमन रहता है, और एक जीयूआई, जो अनुरोध करते समय एप्लिकेशन को फिर से कॉल करता है और इसे डिमन के रूप में चलाने के लिए कहता है। – Dalen
यदि मैं ऐसा करता हूं, तो मुझे ऐप के डिमन भाग के पैरामीटर बदलने या इसे मारने के लिए कुछ आईपीसी विधि का उपयोग करना होगा और जब भी उपयोगकर्ता जीयूआई भाग में कुछ सेटिंग बदलता है तो उसे नए पैरामीटर के साथ लॉन्च करना होगा।त्रुटि रिपोर्टिंग का उल्लेख नहीं है। मुझे आईपीसी या सिस्टम निकास कोड या संकेतों का उपयोग करना होगा या मुझे नहीं पता कि यह क्या समझना है। इसमें कई जटिलताओं को शामिल किया गया है कि मुझे "डेमॉन" सेवा के लिए WX की सही ढंग से कार्य करने की आवश्यकता है। यह असंभव नहीं है, और अगर ऐसा होना चाहिए तो मैं ऐसा कुछ करूंगा, लेकिन मैं पहले आपके उत्तर का प्रयास करने जा रहा हूं। मैं आपको बता दूंगा कि क्या हुआ। – Dalen