2010-08-04 15 views
165

संपादित करने के लिए मेनूबार एप्लिकेशन कैसे बनाएं: यह answer द्वारा एक अच्छा तैयार किए गए मेन्यूबार एप्लिकेशन here (github source) है।मैक


मैं सोच रहा था कि मेन्यूबार एप्लिकेशन कैसे बनाना है, ऐसा करने के लिए क्या आवश्यकताएं हैं?

मैंने देखा कि मेनबार के लिए एक सरल एप्लिकेशन आपके ब्राउज़र का उपयोग करके लिंक खोलना था, मैं इसके समान कुछ बनाना चाहता हूं।

enter image description here

यह मैं समान बनाने के लिए करना अनुप्रयोग है।

+4

यहां एक साधारण [ट्यूटोरियल] (http://nsrover.wordpress.com/2014/10/10/creating-a-os-x-menubar-only-app/) है। – NSRover

उत्तर

129

NSStatusItem जो आप खोज रहे हैं वह है। अपनी जानकारी के लिए 1 के स्ट्रिंग मान के साथ LSUIElement भी जोड़ें। इसे डॉक से छिपाने के लिए।

+0

क्या कोई नमूने हैं जिसके साथ मैं काम कर सकता हूं? – MacMac

+14

http://www.mactech.com/articles/mactech/Vol.22/22.02/Menulet/ - यहां कुछ स्पष्टीकरण के साथ एक नमूना कोड है। – SteamTrout

+0

बहुत उपयोगी। धन्यवाद। – MacMac

66

मुझे Codebox's Popup एक महान प्रारंभिक बिंदु होने के लिए मिला है। यह हालांकि यह अच्छी तरह से काम करता है, वे अपनी साइट पर ध्यान दें है ...

पी.एस. शेर में, एप्पल आईओएस में की तरह बनाया जाता है के लिए एक नया वर्ग जोड़ने के लिए forking on Github.

enter image description here

परिपक्व है। तो, ओएस एक्स 10.7 जारी होने के बाद, आप मूल कोको कक्षाओं पर भरोसा करना बेहतर होगा जहां यह संभव है। अन्य मामलों में, पॉपअप प्रोजेक्ट अभी भी प्रयोग योग्य होना चाहिए।

+3

यह किसी भी मामले में सत्य नहीं है। एनएसपीओपॉवर की गंभीर सीमाएं हैं: टेक्स्ट फ़ील्ड/व्यू पहले उत्तरदाता नहीं बन सकते हैं और इस प्रकार आप टेक्स्ट दर्ज नहीं कर सकते हैं। –

+0

@ क्रिस्टियनकिएनल तो क्या आप अभी भी ओएस एक्स संस्करण> 10.7 के साथ पॉपअप एप्लिकेशन के साथ शुरू करने की सलाह देंगे? – fatuhoku

+0

हां। एनएसपीओवर + स्टेटस आइटम में 10.7 और 10.8 में गंभीर सीमाएं हैं। उदाहरण के लिए ऊपर स्क्रीनशॉट एक खोज क्षेत्र दिखाता है। एनएसपीओपॉवर का उपयोग करके आप खोज क्षेत्र से ठीक से बातचीत नहीं कर सकते हैं। –

2

FlyCut यह एक और अच्छा ओपन सोर्स एप्लिकेशन है जो ऐसा करता है। (एमआईटी लाइसेंस प्राप्त है।) बहुत आसान है, मैं इसे दिन में कई बार उपयोग करता हूं।

// Flycut/AppController.h 
    IBOutlet NSMenu *jcMenu; 

    // Flycut/AppController.m 
    statusItem = [[[NSStatusBar systemStatusBar] 
      statusItemWithLength:NSVariableStatusItemLength] retain]; 
    [statusItem setHighlightMode:YES]; 

    if ([[DBUserDefaults standardUserDefaults] integerForKey:@"menuIcon"] == 1) { 
     [statusItem setTitle:[NSString stringWithFormat:@"%C",0x2704]]; 
    } else if ([[DBUserDefaults standardUserDefaults] integerForKey:@"menuIcon"] == 2) { 
     [statusItem setTitle:[NSString stringWithFormat:@"%C",0x2702]]; 
    } else { 
     [statusItem setImage:[NSImage imageNamed:@"com.generalarcade.flycut.16.png"]]; 
    } 
    [statusItem setMenu:jcMenu]; 
    [statusItem setEnabled:YES]; 
+0

हाय फनरोल, मैं हमेशा इस बार शॉर्टकट को मेन्यू बार में रखना चाहता हूं जैसे कि मैक में डिफ़ॉल्ट वैल्यूम नियंत्रण प्रोग्रामिंग के साथ संभव है ... कृपया मेरी मदद करें !!! – VSN

+0

@VSN StackOverflow टिप्पणियां इस तरह की मदद मांगने के लिए एक अच्छी जगह नहीं हैं। मैं पढ़ने का सुझाव दूंगा [एक अच्छा सवाल कैसे पूछें] (http://stackoverflow.com/help/how-to-ask)। – funroll

+0

मैंने नए प्रश्न पूछा है- कोई मदद वहाँ .... http://stackoverflow.com/questions/23605687/keep-plication-shortcut-always-in-system-menubar-plication-for-mac – VSN

10

के रूप में एप्पल Yosemite में NSStatusItem करने के लिए NSStatusBarButton संपत्ति कहा, हम लागू कर सकते हैं मेनूबार एप्लिकेशन बहुत आसान:

यहाँ कुछ कोड है जैसे कि यह प्रासंगिक हो सकता है लगता है कि है। मैंने अभी गिटूब पर नमूना प्रोजेक्ट बनाया है।

https://github.com/taichino/PopupTest

+0

डालने के लिए धन्यवाद यह एक साथ! – cwd

8

BitBar कि "अपने मैक ओएस एक्स मेनू बार में कुछ भी रखो" कर सकते हैं GitHub पर एक आवेदन पत्र है।

यह खोल या अन्य निष्पादन योग्य स्क्रिप्ट चलाता है (जिसे यह Plugins - see the many examples in the plugins repo पर कॉल करता है) और मेनू बार में परिणाम प्रदर्शित करता है। आप अपनी खुद की प्लगइन लिख सकते हैं और इसे 'प्लगइन्स फ़ोल्डर' में जोड़कर इसे चला सकते हैं। साथ ही जानकारी प्रदर्शित करने के साथ, यह आपके द्वारा परिभाषित प्लगइन मेनू से इंटरैक्टिव रूप से प्री-डिफ़ाइंड बैश स्क्रिप्ट चला सकता है।

चूंकि मैंने पहली बार यह उत्तर पोस्ट किया है, इसकी लोकप्रियता exploded (वर्तमान में 52 योगदानकर्ता) है और अब भी एक वितरित संस्करण है जिसके साथ आप अपने स्वयं के प्लगइन पैकेज कर सकते हैं।

एक बहुत ही सरल (गैर-सहभागी) उदाहरण दिखाने के लिए लाइव Bitcoin मूल्य:

enter image description here

+3

धन्यवाद [cwd] (http://stackoverflow.com/users/288032/cwd) मेरे खराब मूल उत्तर में सुधार के लिए – MatzFan

0

Mail Notifr एक और खुला स्रोत मेनू बार एप्लिकेशन है। इससे मुझे एक गुच्छा की मदद मिली, खासकर जब मुझे यह पता लगाने की ज़रूरत थी कि लॉगिन पर खुलेपन को कैसे कार्यान्वित किया जाए। App Store पर भी उपलब्ध है।