【问题标题】:Detect when screensaver activates with Cocoa使用 Cocoa 检测屏幕保护程序何时激活
【发布时间】:2010-05-02 03:31:55
【问题描述】:

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

【问题讨论】:

标签: cocoa macos detect screensaver


【解决方案1】:

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

另见this answer

【讨论】:

    【解决方案2】:

    使用 swift 快速 sn-p:

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

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

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

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

    【讨论】:

      【解决方案3】:

      迅速 4:

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

      处理程序:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-25
        • 2011-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多