Определить, когда заставка активируется с какао - PullRequest
5 голосов
/ 02 мая 2010

Есть ли способ вызвать действие, когда активируется заставка Mac OS X или когда он переходит в спящий режим (предпочтительно с использованием какао)?

Ответы [ 2 ]

7 голосов
/ 02 мая 2010

Вы можете зарегистрироваться для различных распределенных уведомлений - на 10.6 я вижу com.apple.screenIsLocked / screenIsUnlocked и com.apple.screensaver.didstart / willstop / didstop. (В старых версиях Mac OS X могут отсутствовать все эти уведомления.) Вы можете наблюдать уведомления по мере их появления с помощью Notification Watcher .

Также см. этот ответ .

2 голосов
/ 09 ноября 2015

Быстрый фрагмент с помощью swift:

NSDistributedNotificationCenter.defaultCenter().addObserver(
        self,
        selector: "screenIsLocked:",
        name: "com.apple.screenIsLocked",
        object: nil)

, где self - это наблюдатель, которого вы хотите зарегистрировать, селектор - это обработчик функции, name - имя уведомления, а объект - необязательный отправитель уведомления, где, если указано, только уведомления от этого отправителя передаются наблюдателю.

Также обратите внимание, что вы можете передать nil в качестве имени и получать целую кучу отправленных уведомлений, а не только указанное.

PS: есть много уведомлений, на которые вы можете подписаться, поэтому убедитесь, что вы знаете, к какому объекту они относятся, чтобы иметь возможность их использовать. Например, проверьте NSDistributedNotificationCenter , NSNotificationCenter и NSWorkspace уведомления.

...