检测屏幕保护程序何时使用Cocoa激活

时间:2010-05-02 03:31:56

标签: cocoa macos detect screensaver

有没有办法在Mac OS X屏幕保护程序激活或进入睡眠状态时触发操作(最好使用可可)?

3 个答案:

答案 0 :(得分:7)

您可以注册各种分布式通知 - 在10.6上,我看到com.apple.screenIsLocked / screenIsUnlocked和com.apple.screensaver.didstart / willstop / didstop。 (较早版本的Mac OS X可能没有所有这些通知。)您可以使用Notification Watcher观察通知。

另见this answer

答案 1 :(得分:2)

使用swift的快速代码段:

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

将self作为您要注册的观察者,选择器是函数处理程序,name是通知名称,对象是可选的通知发送者,如果仅指定,则将来自此发件人的通知传递给观察者。

另请注意,您可以传递nil作为名称并接收发送的所有通知,而不仅仅是指定的通知。

PS:您可以订阅许多通知,因此请确保您知道他们成为哪些对象才能使用它们。例如,请查看NSDistributedNotificationCenterNSNotificationCenterNSWorkspace通知。

答案 2 :(得分:0)

迅速4:

DistributedNotificationCenter.default().addObserver(self, selector: #selector(screenIsLocked(_:)), name: Notification.Name("com.apple.screenIsLocked"), object: nil)

处理程序:

@objc func screenIsLocked(_ notification: Notification) {
    // do stuff here
}