Обнаружение полноэкранных приложений на Mac

Я разрабатываю простое приложение в Cocoa и хочу определить, работает ли какое-либо приложение в полноэкранном режиме. Это возможно?

Через API-интерфейс runningApplications я могу получить различную информацию, но нет конкретного свойства, связанного с полноэкранным режимом. Кто-нибудь знает, как это обнаружить? Есть ли для этого какое-либо углеродное событие или API?


person sandy Surname or Initialc    schedule 08.04.2013    source источник
comment
Аналогично stackoverflow.com/questions/7138194/   -  person Jay    schedule 08.04.2013
comment
@Jay Спасибо, что указали на эти ссылки, у меня есть еще один вопрос, работает ли какое-либо приложение в полноэкранном режиме, и если какое-либо другое приложение выводит предупреждающее сообщение, что происходит? а также то, что происходит для экранного меню, такого как всплывающее сообщение, отображаемое аналогично доступной функции обновления Apple ... не могли бы вы помочь мне найти эти ответы.   -  person sandy Surname or Initialc    schedule 08.04.2013
comment
Хм, вы можете активировать свое приложение, чтобы отображалось предупреждение, как в stackoverflow.com/questions/5269116/ ?   -  person Jay    schedule 08.04.2013
comment
хорошо ... но мой основной вопрос заключается в том, как определить, вышло ли какое-либо пользовательское приложение из полноэкранного режима? .. вот что мне нужно сделать ... Я хочу отобразить пользователю всплывающее сообщение, но с условием, что если у пользователя есть какое-либо из полноэкранных приложений, например, это может быть любая игра или любое приложение, тогда мне не нужно будет его отображать, тогда, как только приложение выйдет из полноэкранного режима, я хочу отобразить сообщение, .. таков их способ обнаружить это??   -  person sandy Surname or Initialc    schedule 08.04.2013


Ответы (3)


Я столкнулся с этим весной и провел целую вечность, пытаясь заставить его работать. В итоге я упаковал свой код в небольшой проект на GitHub, но совершенно забыл поделиться им здесь.

https://github.com/shinypb/FullScreenDetector

Надеюсь, это полезно для кого-то.

person user3007353    schedule 19.11.2013

В любом случае, попробовав так много вариантов и покопавшись в NSWorkspace, я нашел способ, с помощью которого мы можем добиться этого, это уведомление.

"NSWorkspaceActiveSpaceDidChangeNotification"

В документе Apple говорится: «Опубликовано, когда произошло изменение Spaces». поэтому с помощью мы можем зарегистрироваться для него. наряду с этим нам нужно использовать свойство NSWindow «isOnActiveSpace», чтобы с его помощью мы могли определить, когда приложение входит в полноэкранный режим и выходит из него.

person sandy Surname or Initialc    schedule 09.04.2013
comment
Я попытался добавить наблюдателя к уведомлению NSWorkspaceActiveSpaceDidChangeNotification. Но это работает только в режиме отладки. Есть ли какие-либо системные ограничения в режиме выпуска? - person Gon; 31.10.2013
comment
Это доступно с 10.6 и более поздних версий.. проверьте один раз.. нет никаких ограничений как таковых сразу, это должно работать. - person sandy Surname or Initialc; 09.11.2013
comment
Странный. Я покопаюсь в этом. - person Gon; 13.11.2013
comment
Изменения пространства происходят не только тогда, когда приложения входят в полноэкранный режим или выходят из него. Пользователи могут иметь произвольное количество неполноэкранных пространств. Какое окно -isOnActiveSpace вы планировали протестировать? - person Ken Thomases; 19.11.2013

Вы хотите, чтобы ключ-значение соблюдал -[NSApplication currentSystemPresentationOptions]. Когда активное приложение находится в полноэкранном режиме, это свойство будет включать NSApplicationPresentationFullScreen.

person Ken Thomases    schedule 19.11.2013