Приложение LSUIElement, которое запускает окно с меню приложения? - PullRequest
1 голос
/ 03 мая 2009

Я пишу приложение, которое изначально начинается только с элемента NSStatusItem. Из его меню пользователь может щелкнуть пункт меню, который открывает окно NSWindow.

Мне бы хотелось, чтобы, когда это окно было в фокусе, отображалось меню приложения. Возможно ли это?

1 Ответ

3 голосов
/ 03 мая 2009

Нет, чтобы получить меню вашего приложения, вам нужно было бы перевести приложение в процесс переднего плана (т. Е. Больше не LSUIElement). После перехода приложения на передний план оно больше не может вернуться обратно.

Функция для перехода приложения на передний план TransformProcessType найдена в Carbon Process Manager .

Ваши варианты здесь: 1) после вывода процесса на первый план с помощью TransformProcessType, запишите небольшой хитрый трюк, который закрывает и перезапускает приложение. Другой вариант 2) - создать двухэтапное приложение (этот вариант я бы предпочел, если это возможно в вашем случае), когда часть приложения всегда находится в фоновом режиме (т. Е. LSUIElement). Когда это приложение хочет выдвинуть окно с меню, оно запускает вспомогательное приложение, которое содержит окно и т. Д. Как обычное приложение. Когда пользователь закончил, это приложение закрывается и закрывается. Эти два приложения могут легко обмениваться данными через любое количество механизмов IPC, включая сокеты UD, распределенные объекты Cocoa, NSMessagePorts и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...