5

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

4

3 回答 3

8

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

另请参阅此答案

于 2010-05-02T04:07:15.310 回答
2

使用 swift 的快速片段:

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

self 是您要注册的观察者, selector 是函数处理程序, name 是通知名称,而 object 是可选的通知发送者,如果指定,则只有来自该发送者的通知才会传递给观察者。

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

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

于 2015-11-09T15:48:25.110 回答
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
}
于 2020-10-02T20:31:32.863 回答