Windows是进入睡眠模式还是使用C++休眠?

c00*_*0fd 0 c++ windows winapi power-management

可能重复:
如何检测窗口是休眠还是暂停?

有人可以刷新我的记忆,从在Windows上运行的程序的角度来看,无法知道系统是进入睡眠模式还是休眠,对吗?(我需要知道系统输入的模式,或者刚刚恢复的模式.)

小智 6

从我收集的内容来看,用户模式代码无法区分suspend和hibernate.有一个名为SYSTEM_POWER_STATE的内核模式枚举,它包含您要查找的状态,但您无法在用户模式下获得该状态.

您可以做的最好是设置回调以捕获WM_POWERBROADCAST消息.暂停或休眠即将发生时发送PBT_APMQUERYSUSPEND消息.之后,如果暂停未被取消,您将收到PBT_APMSUSPEND.在恢复时,将发送PBT_APMRESUMEAUTOMATIC消息.

  • 请参阅[我的答案](http://stackoverflow.com/a/6187658/103167),这解释了为什么它不可能. (2认同)