检测mac os x上的用户活动

我使用函数“IOPMSchedulePowerEvent”来安排Sleep或Wake-Events,并使用“IORegisterForSystemPower”注册我的守护进程以接收电源状态更改。 一切正常!

当系统进入睡眠状态并且稍后在预定时间醒来时,我的守护进程会做一些工作,之后系统应该再次进入睡眠状态。

现在我的问题:

  1. 如果系统被用户或预定时间唤醒,我该如何检测?

  2. 如果用户当前正在使用该系统,我怎么能检测到守护进程不能将它置于睡眠模式?

谢谢诺比克

有一种简单的方法可以检测各种forms的用户交互:使用CGEventSourceCounterForEventType可以查询自启动时间以来键盘按下或鼠标移动的次数。 通过定期执行此操作并比较计数,您可以检测交互。