5

Mac OS X スクリーンセーバーがアクティブになったとき、またはスリープ状態になったときに (できればココアを使用して) アクションをトリガーする方法はありますか?

4

3 に答える 3

8

さまざまな分散通知に登録できます。10.6では、com.apple.screenIsLocked/screenIsUnlockedとcom.apple.screensaver.didstart/willstop/didstopが表示されます。(古いバージョンのMac OS Xには、これらの通知のすべてが含まれていない場合があります。)通知ウォッチャーで発生する通知を監視できます。

この回答も参照してください。

于 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: サブスクライブできる通知は多数あるため、通知を使用できるようにするには、通知がどのオブジェクトのメンバーであるかを確認してください。たとえば 、 NSDistributedNotificationCenterNSNotificationCenter、およびNSWorkspace通知を確認してください。

于 2015-11-09T15:48:25.110 に答える