如果盖子关闭,如何以编程方式从睡眠中醒来?

时间:2010-07-23 06:04:43

标签: objective-c cocoa macos

我想以编程方式将系统从睡眠中唤醒,有没有办法做到这一点?

我已阅读以下链接: http://developer.apple.com/mac/library/qa/qa2004/qa1340.html

这只谈到获得通知,但不确定是否有办法将系统从睡眠中唤醒?

我很感激信息的一些线索......

更新

根据我尝试使用IOPMSchedulePowerEvent

的建议

我使用的代码:

NSCalendarDate  *timeIntervalSinceNow = [NSCalendarDate dateWithTimeIntervalSinceNow:40];
IOReturn result = IOPMSchedulePowerEvent ((CFDateRef)timeIntervalSinceNow, NULL, CFSTR(kIOPMAutoWake)); 

结果:

如果盖子关闭,它在MacBook中失败

我做错了什么或任何解决方案?

1 个答案:

答案 0 :(得分:6)

您可以通过电源管理器使用IOPMSchedulePowerEvent安排唤醒事件。您可以安排立即醒来。 pmset是电源管理器的命令行包装器。在某些情况下,您还可以使用IOCancelPowerChange来预防睡眠。

您可以通过生成鼠标或按键事件来阻止睡眠或唤醒。生成事件的一种方法是使用CGPostKeyboardEvent。

编辑:

正常睡眠不同于翻盖闭合睡眠。要影响后者,您必须编写像Insomnia这样的内核扩展。