ユーザがいないときには役に立たないアプリケーションユーティリティがあります。ですから、リソースを節約するために、いつディスプレイがスリープ状態にあるかどうかを知りたいと思います。ディスプレイがスリープ状態にあるかどうかを確認するか、スリープ通知を受信する
りんごの目覚め/睡眠に関する通知はdedicated articleですが、コンピュータの睡眠のみを扱い、睡眠を表示しません。
ディスプレイがスリープ状態にあるときにアプリケーションを「休止状態」にする方法はありますか?
はユーザがいないときには役に立たないアプリケーションユーティリティがあります。ですから、リソースを節約するために、いつディスプレイがスリープ状態にあるかどうかを知りたいと思います。ディスプレイがスリープ状態にあるかどうかを確認するか、スリープ通知を受信する
りんごの目覚め/睡眠に関する通知はdedicated articleですが、コンピュータの睡眠のみを扱い、睡眠を表示しません。
ディスプレイがスリープ状態にあるときにアプリケーションを「休止状態」にする方法はありますか?
はありがとう、私は(多分スクリーンセーバーがそれ?It'sは、システムがスリープ状態に落ちる前でキックする可能性が非常に高いん)眠りに落ちるディスプレイ、I'によって発行されたすべてのコールを見つけるcouldn'tので、アイドル時間を手動で検出し、それを表示スリープ設定と比較することをお勧めします。 This articleでは、IOKitからアイドル時間を取得する方法について説明しています。現在のスリープ設定を簡単に取得できるはずです。 「pmset -g | grep sleep」と入力します。
上記を投稿してから2分後に、私はオープンソースのコマンドラインツールを発見しました。おそらく多くの人に役立つでしょう。は、あなたが求めたことをすることができるようです。
DisplayWranglerサービスは、ディスプレイの電源がオフになるときの通知を送信します。
// Doesn't include error checking - just a quick example
io_service_t displayWrangler;
IONotificationPortRef notificationPort;
io_object_t notification;
displayWrangler = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceNameMatching("IODisplayWrangler");
notificationPort = IONotificationPortCreate(kIOMasterPortDefault);
IOServiceAddInterestNotification(notificationPort, displayWrangler, kIOGeneralInterest, displayPowerNotificationsCallback, NULL, ¬ification);
CFRunLoopAddSource (CFRunLoopGetCurrent(), IONotificationPortGetRunLoopSource(notificationPort), kCFRunLoopDefaultMode);
IOObjectRelease (displayWrangler);
その後、コールバックは、このようなものになります。
void displayPowerNotificationsCallback(void *refcon, io_service_t service, natural_t messageType, void *messageArgument)
{
switch (messageType) {
case kIOMessageDeviceWillPowerOff :
// This is called twice - once for display dim event, then once
// for display power off
break;
case kIOMessageDeviceHasPoweredOn :
// Display powering back on
break;
}
}
をこれは、しばらく前に尋ねた質問への応答であります - 私の答えを追加すると便利だと思った。
NSWorkspaceが表示されますが、目覚めと睡眠ときの通知のカップルを持っていますNSWorkspaceScreensDidSleepNotificationとNSWorkspaceScreensDidWakeNotification
おかげで、私はそれをチェックアウトします! SleepWatcherは、アプリケーションに直接組み込まれるだけのシンプルなようです。 –