2010-06-07 173 views
0

我试图在Obj-C/Cocoa中简单地创建一个简单的状态栏应用程序。Mac OS X状态栏应用程序 - 从Cmd/Alt菜单隐藏它?

因此,我已经做到了这一点 - 声明一个NSStatusItem,将它添加到NSStatusBar,然后给它一个NSMenu对象。像这样的位......

NSStatusBar *bar = [NSStatusBar systemStatusBar]; 

theItem = [bar statusItemWithLength:NSVariableStatusItemLength]; 
[theItem retain]; 

[theItem setTitle: NSLocalizedString(@"Tablet",@"")]; 
[theItem setHighlightMode:YES]; 
[theItem setMenu:theMenu]; 

(从“状态栏编程主题”,苹果文档拍摄的实施例)现在,理想情况下,我想这个应用程序运行,并不会从CMD访问/ ALT窗口改变“菜单”(缺乏一个更好的词),我见过应用程序之前做它,并希望真的。这个想法是我只想让它在每个窗口都可以访问,而在状态栏上没有自己的NSMenu,并且无法将其作为活动应用程序( - 因此它无法接管整个状态栏,它不能通过CMD/ALT看到)

此外,我想知道是否StatusBarItem支持拖放一个项目的能力呢?我不确定这是否是NSStatusBar的限制。

我已经阅读了关于deamons和代理,但这似乎太低级/超过杀这样一个简单的应用程序!

提前欢呼!

+0

你的意思是Command-Tab功能? 而我不理解你的问题。你想要一个不是菜单但在所有应用程序中都可访问的状态栏项目?意思是图标是可见的,当用户点击它时,它不会有菜单吗? 另外,我不相信我见过支持拖放的状态栏应用程序,但这并不意味着它不可能。 – 2010-06-07 15:47:36

+0

命令选项卡甚至 - 代表我的愚蠢输入错误!我基本上想要一个状态栏应用程序 - 我可以做得很好,但是想要将它从Command-Tab功能中隐藏起来。我不确定拖放功能,但我可能看到类似的东西。尽管它可能已经使用专用SystemUIPlugin框架的一部分来实现 - “NSMenuExtra”。当然,我已经考虑过对此进行研究 - 但是在升级过程中使用私有框架并使其中断的想法并不理想! – Moddy 2010-06-07 22:58:49

回答

1

LSUIElement键放到您应用的info.plist中。要进行拖放操作,可以将状态项的视图设置为任何视图应该接收的放置,并且从此处正常工作。

+0

我会试试这个 - 看起来好像它应该是一个理想的解决方案!我会回来的结果! – Moddy 2010-06-07 23:00:59