ResumeAutomatic:计算机已自动唤醒以处理事件。
注意:如果系统在广播ResumeAutomatic后检测到任何用户活动,它将广播ResumeSuspend事件,让应用程序知道他们可以恢复与用户的完全交互。
ResumeSuspend:暂停后系统恢复运行。
这是否意味着' ResumeAutomatic'当计算机从睡眠状态唤醒并且“恢复暂停”时调用。在用户输入凭据后登录时调用?
我正在使用tcp套接字与服务器通信。因此,为了在系统从休眠状态恢复时重新连接到服务,我有以下代码
protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
{
Logger.Log("Power status is : " + powerStatus);
if (powerStatus == PowerBroadcastStatus.ResumeAutomatic)
{
ConnectionWatchdog.ReConnect();
}
return base.OnPowerEvent(powerStatus);
}
但我观察到枚举值是随机的。以下是3种不同唤醒时间的3种不同痕迹。
20150525#094449 ::电源状态为:暂停
20150525#094716 ::电源状态为:ResumeSuspend
20150525#103431 ::电源状态为:暂停
20150525#103525 ::电源状态为:ResumeSuspend
20150525#103525 ::电源状态为:ResumeAutomatic
20150525#103558 ::电源状态为:暂停
20150525#103835 ::电源状态为:ResumeAutomatic
答案 0 :(得分:7)
(这不是在实践中如何运作 - 见下文。)
计算机在睡眠后恢复时,始终会发送此消息。
计算机在睡眠后恢复,并且Windows认为用户在场 - 即,有人坐在机器前面。当a)唤醒是由人为交互(某人按下电源按钮,按下按键,移动鼠标等)引起时,会发送此消息;或b)由于唤醒定时器,机器自动唤醒后第一次出现人机交互。
要直接回答您的问题, ResumeSuspend 会在用户首次与计算机进行交互时发送。这可能是输入密码来解锁它,但它并不是必须的。如果用户只是摆动鼠标,仍然会发送 ResumeSuspend 。
我不幸地不得不深入到Windows的兔子洞里面。支持电源管理,配置文件等.Vista时代的东西令人沮丧,因为它基于质量和周到的设计,但实现和文档都不是不完全,并且从未修复过。还有很多其他问题我没有进入这里。这有点遗憾。