Приложение строки состояния Mac OS X - скрыть его из меню Cmd/Alt?

Я пытаюсь поднять простое маленькое приложение строки состояния в Obj-C/Cocoa.

Итак, я сделал это прагматично - объявив NSStatusItem, добавив его в NSStatusBar, а затем присвоив ему объект NSMenu. Немного похоже на это...

NSStatusBar *bar = [NSStatusBar systemStatusBar];

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

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

(Пример взят из "Темы программирования строки состояния", Документация Apple)

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

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

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

Ура заранее!

1 ответ

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

Другие вопросы по тегам