有没有办法在 Mac OS X 屏幕保护程序激活或进入睡眠状态时触发操作(最好使用可可)?
问问题
2662 次
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:您可以订阅许多通知,因此请确保您知道它们是哪个对象的成员才能使用它们。例如查看 NSDistributedNotificationCenter、NSNotificationCenter和NSWorkspace通知。
于 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 回答