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