5

osxがスリープ状態になるときと、スリープ状態から再開するときを検出できるPythonプログラム(私はデーモンとして実行すると思います)を作成することは可能ですか?

私がこれを研究していないように思われる場合はお詫びします-私は自分の快適ゾーンからかなり外れており、Pythonからこれを報告できるCで書かれたものに委任する必要があるのか​​、それとも不要なのかわかりません。

4

2 に答える 2

5

IOKitにはこれを行うためのツールがあります。具体的には、に登録されたコールバックIORegisterForSystemPower()は、システムがスリープする直前と、システムがウェイクアップした直後に呼び出されます。

bbのsleepwatcherデーモンをチェックアウトすることをお勧めします。このデーモンは、システムのスリープ/スリープ解除やその他のさまざまなイベント(スリープ/スリープ解除、システムアイドル、シャットダウンなどの表示)など、さまざまなイベントが発生したときに指定したコマンドを呼び出すことができます。 。

于 2012-12-06T20:55:40.553 に答える
3

Cocoa開発者は耳を傾けることができますNSWorkspaceDidWakeNotification

- (void) receiveSleepNote: (NSNotification*) note
{
    NSLog(@"receiveSleepNote: %@", [note name]);
}

- (void) receiveWakeNote: (NSNotification*) note
{
    NSLog(@"receiveWakeNote: %@", [note name]);
}

- (void) fileNotifications
{
    //These notifications are filed on NSWorkspace's notification center, not the default
    // notification center. You will not receive sleep/wake notifications if you file
    //with the default notification center.
    [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver: self
            selector: @selector(receiveSleepNote:)
            name: NSWorkspaceWillSleepNotification object: NULL];

    [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver: self
            selector: @selector(receiveWakeNote:)
            name: NSWorkspaceDidWakeNotification object: NULL];
}

このサンプルコードは、Appleのドキュメントからの抜粋です。スリープおよびウェイク通知の登録と登録解除

于 2015-07-28T08:34:27.443 に答える