2010-06-07 2 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]; 

(Пример взят из «Темы Status Bar Программирование», Apple, документация)

Теперь в идеале, я хотел бы это приложение, чтобы запустить и не быть доступен из CMD/ALT окно «меню» (из-за отсутствия лучшего слова), я видел, как приложения делают это раньше и действительно хотели бы этого. Идея заключается в том, что я просто хочу, чтобы она была доступна из каждого окна, но не имела собственного NSMenu в строке состояния и не могла иметь его в качестве активного приложения (- поэтому он не смог взять всю строку состояния , и его невозможно увидеть через CMD/ALT)

Кроме того, мне было интересно, поддерживает ли StatusBarItm возможность перетаскивания элемента на него? Я не уверен, что это ограничение NSStatusBar.

Я читал о деамонах и агентах, но это кажется слишком низким уровнем/над убийством для такого упрощенного приложения!

Приветствия заранее!

+0

Вы имеете в виду функцию Command-Tab? И я не понимаю ваш вопрос. Вам нужен элемент состояния, который не является меню, но доступен во всех приложениях? Значит, значок будет виден, у него просто не будет меню, когда пользователь щелкнет по нему? Кроме того, я не верю, что когда-либо видел приложение с поддержкой состояния, которое поддерживало перетаскивание, но это не значит, что это невозможно. –

+0

Command-Tab даже - глупо опечатка от моего имени! Я хочу, в основном, приложение для строки состояния - я могу сделать это хорошо, но хочу скрыть его из функции Command-Tab. Я не уверен в функциональности перетаскивания, я, возможно, видел что-то подобное. Хотя, возможно, это было реализовано с использованием части частной системы SystemUIPlugin Framework и «NSMenuExtra». Естественно, я подумал об этом, но мысль о том, что использование частной структуры и ее разрыв во время обновления не идеальна! – Moddy

ответ

1

Поместите ключ LSUIElement в info.plist вашего приложения. Чтобы выполнить перетаскивание, вы устанавливаете представление элемента состояния на любой вид, который должен получать падение, и он нормально работает оттуда.

+0

Я собираюсь попробовать это - похоже, что это идеальное решение! Я отправлю обратно с результатами! – Moddy

Смежные вопросы