我使用函数“IOPMSchedulePowerEvent”来安排Sleep或Wake-Events,并使用“IORegisterForSystemPower”注册我的守护进程以接收电源状态更改。一切正常!
当系统进入睡眠状态并且稍后在预定时间醒来时,我的守护进程会做一些工作,之后系统应该再次进入睡眠状态。
现在我的问题:
如果系统被用户或预定时间唤醒,我如何检测?
如果用户当前正在使用该系统,我如何检测,以便该守护进程不能将其置于睡眠模式???
由于 Nobik
答案 0 :(得分:4)
有一种简单的方法可以检测各种形式的用户交互:使用CGEventSourceCounterForEventType
可以查询自启动时间以来键盘按下或鼠标移动的次数。通过定期执行此操作并比较计数,您可以检测到交互。