检查显示在睡眠或睡眠收到通知

我有一个应用程序的工具,它变得无用时,有没有用户。 因此,为了节约资源,我想它知道何时/是否显示在睡觉。

有一个关于苹果唤醒/休眠通知专门的文章,但它只能与电脑睡眠优惠和不显示的睡眠。

是否有应用程序“冬眠”时,显示的是在睡眠的方法吗?

谢谢

--------------解决方案-------------

由于我couldn't找到显示下降到睡眠(也许是屏幕不呢?很汇入作业可能踢在系统中下降到睡觉前)发出的号召,我倒是建议手动检测空闲时间,然后比较它显示睡眠设置。 本文介绍如何从由于IOKit空闲时间,你应该能够轻松地与“pmset -g | grep的睡眠”获取当前的睡眠设置,如:

公布上述两分钟后,我发现了一个开源的命令行工具,可能会帮助你很多乘车路线:SleepWatcher似乎是能够做你刚才问什么。

该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, &notification);

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

分类:目标C 时间:2015-03-14 人气:22
本文关键词: OSX,目标C,可可
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.334 (s). 10 q(s)