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

Gir*_*ari 12 macos cocoa objective-c

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

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

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

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

更新:

根据我尝试使用IOPMSchedulePowerEvent的建议

我用过的代码:

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

结果:

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

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

dra*_*ard 6

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

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

编辑:

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

  • 你怎么能通过产生一个事件来唤醒?如果计算机处于睡眠状态,则表示代码未运行. (2认同)