2010-12-11 10 views
14

पर सी #/मोनो का उपयोग कर सिस्टम ट्रे केवल (कोई डॉक आइकन) एप्लिकेशन मैक पर उपयोग के लिए मैं अपने सी # अनुप्रयोगों में से एक को मोनो पर ले जाने के लिए देख रहा हूं। वर्तमान में, मैं यह समझने की कोशिश कर रहा हूं कि इसे "पृष्ठभूमि" प्रक्रिया कैसे बनाएं, लेकिन अभी भी जीयूआई तत्व रखने की क्षमता है (मुझे लगता है कि यह नियम mono-service से बाहर है)।मैक

  1. बातचीत के बहुमत के लिए घड़ी द्वारा एक ट्रे आइकन रखो:

    अंतिम लक्ष्य यह है।

  2. गोदी आइकन कि आम तौर पर एक का शुभारंभ किया आवेदन
  3. स्टार्टअप पर आवेदन चलाने के साथ आता है निकालें।

संक्षेप में, बस सोचें कि Dropbox ऐप कैसे काम करता है। मैं उस प्रकार का जीयूआई चाहता हूं, लेकिन एक मोनो/मैक ऐप के साथ।

मेरा मानना ​​है कि यह आमतौर पर एप्लिकेशन बंडल की Info.plist में LSUIElement = 1 सेट करके पूरा किया जाता है। हालांकि, मुझे इसके साथ कोई भाग्य नहीं मिला है। मुझे लगता है कि यह mono कमांड के साथ ऐप बंडल के भीतर से अपना एप्लिकेशन लॉन्च करने के लिए कुछ कर सकता है। एक बार ऐप mono लॉन्च करने के बाद मुझे लगता है कि यह आगे के एप्लिकेशन लॉन्च करने के लिए तैयार नहीं है। हालांकि, यह एक शुद्ध अनुमान है।

क्या किसी के पास इस पर कोई विचार है? धन्यवाद।

+0

यदि आपने टूलकिट का उपयोग किया है तो आपको अधिक सफलता मिल सकती है। –

+0

मैं जीटीके # का उपयोग करने की कोशिश कर रहा था। मुझे नहीं लगता कि यह संभव है हालांकि। – jocull

+1

आप इसके बजाय मोनोमैक देखना चाहते हैं। जीटीके # के साथ आपके पास उपलब्ध मूल मैक ओएस एक्स हुक उपलब्ध होंगे। – Nate

उत्तर

9

मैं आपका जवाब है

 NSStatusItem sItem = NSStatusBar.SystemStatusBar.CreateStatusItem(30); 
     sItem.Menu = notifyMenu; 
     sItem.Image = NSImage.FromStream(System.IO.File.OpenRead(NSBundle.MainBundle.ResourcePath + @"/notify-icon.icns")); 
     sItem.HighlightMode = true; 

notifyMenu के साधन के रूप NSMenu के अपने उदाहरण है आपके अधिसूचना आइकन के लिए संदर्भ मेनू पट्टी।

और अपने ICNS फ़ाइल डाल अपनी परियोजना फ़ाइलों और सामग्री के रूप में यह ध्वज में चिह्न संगीतकार का उपयोग किया। (दाएं क्लिक-> सामग्री एक्शन का निर्माण>)

अब यह गोदी आइकन निकालने के लिए समय आ गया है: अपने Info.plist फ़ाइल पर

।एक नया बूलियन टाइप करें और इसे नाम दें "LSUIElement" और मान को YES पर सेट करें।

उम्मीद है कि यह मदद करता है। सम्मान, पेमन मोर्टाज़वी

+0

यदि कोई इसे पुष्टि कर सकता है, तो मैं इसे सबसे अच्छे उत्तर के रूप में चिह्नित करूंगा (मेरे पास अब इंस्टॉल किए गए टूल नहीं हैं) – jocull

+0

मैं पुष्टि कर सकता हूं कि यह ज़ैमरिन स्टूडियो 5.8.2 के साथ योसामेट पर काम करता है। –

0

मुझे नहीं पता कि मैं आपके प्रश्न को सही तरीके से समझता हूं या नहीं। तुम सिर्फ मुख्य विंडो के किसी भी धारणा के बिना एक आवेदन की जरूरत है, लेकिन सिस्टम ट्रे के साथ, मैं एक बार यह WinForms साथ

static void Main() 
{ 
    Application.Run(new MyContext()); 
} 

कहाँ MyContext एक वर्ग ApplicationContext इसके निर्माता में एक ट्रे आइकन बनाया जो से निकाला गया था की तरह कोड का उपयोग किया था, तो NotifyIcon कक्षा का उपयोग कर। वास्तव में Application.Run() आपके एप्लिकेशन के लिए संदेश लूप शुरू करता है जो ट्रे आइकन को उपयोगकर्ता क्लिक का जवाब देने का मौका देता है (ट्रे आइकन स्वयं पहले बनाया जा सकता है)। यह विंडोज और उबंटू पर काम करता था, मैक पर कभी परीक्षण नहीं किया गया था।

फिर भी मैं मैक पर लिनक्स और मोनोमैक पर जीटीके # का उपयोग करूंगा। पहले मामले में अवधारणा शायद बहुत समान है (आप टॉम्बाय कोड भी देख सकते हैं, यह ठीक है!)। दूसरे में - पता नहीं, कभी इसका इस्तेमाल नहीं किया।

सबसे पहले, एक स्थिति पट्टी आइकन जोड़ने के लिए (जीत रूपों में चिह्न सूचित करने के वैकल्पिक):