Как наблюдать, сделалEnterFullScreenNotification глобально? - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу, чтобы наблюдатель NSWindow.didEnterFullScreenNotification глобально активировал все приложения. Как это сделать?

Справочная информация

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

  1. Наблюдатель NSWindow.didEnterFullScreenNotification во всем мире, если я получаю какие-либо уведомления, то я отправляю данные на сервер.
// NotificationCenter.default.addObserver Can only observe within my watermark app
 NotificationCenter.default.addObserver(forName: NSWindow.didEnterFullScreenNotification, object: nil, queue: .main) { (noti) in
  print("didEnterFullScreenNotification")

 }
  1. Пусть это приложение водяных знаков, всегда перед другими окнами. Но так ли это можно сделать? 3. NSEvent.addGlobalMonitorForEvents кажется, что там есть свойство окна, но все еще не знаю, что делать
  2. Я приложил скриншот для ваших ссылок, это мое приложение водяных знаков.

1 Ответ

1 голос
/ 19 апреля 2019

Там только уведомления, которые вы можете наблюдать "глобально", отправляются в NSDistributedNotificationCenter.Все обычные уведомления, которые вы видите в API какао, публикуются только во внутреннем / «локальном» центре уведомлений приложения.

Чтобы узнать, какие глобальные уведомления публикуются, добавьте наблюдателя и передайте nil для имени и объекта.Затем вы можете войти имя полученных уведомлений.Единственное уведомление, которое срабатывает, когда окно становится полноэкранным, это NSWorkspaceActiveSpaceDidChangeNotification, но это просто означает, что пространство изменилось;узнать это невозможно, потому что окно стало полноэкранным.

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