2010-05-02 88 views
4

當Mac OS X屏幕保護程序激活或進入睡眠狀態(最好使用可可)時,是否有辦法觸發某個操作?當屏幕保護程序與Cocoa激活時檢測

+1

http://stackoverflow.com/questions/1419531/mac-screensaver-start-event可能的重複 – 2010-05-02 04:07:46

回答

7

您可以註冊各種分佈式通知 - 在10.6上,我看到了com.apple.screenIsLocked/screenIsUnlocked和com.apple.screensaver.didstart/willstop/didstop。 (較舊版本的Mac OS X可能沒有包含所有這些通知。)您可以觀察Notification Watcher發生的通知。

另請參閱this answer

使用SWIFT
1

快速片段:

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

與自我是你要註冊的觀察者,選擇是函數處理器,名稱的通知時的名稱,對象的可選通知發件人其中,如果從指定的唯一的通知這個發送者被傳遞給觀察者。

另請注意,您可以傳遞nil作爲名稱並接收發送的所有通知,而不僅僅是指定的通知。

PS:有很多通知可以訂閱,所以請確保您知道他們是哪個對象的成員以便能夠使用它們。例如,檢出NSDistributedNotificationCenterNSNotificationCenterNSWorkspace通知。