2012-08-14 474 views
0

可能重复:
How to detect if windows is going to hibernate or suspend?Windows是否进入睡眠模式或使用C++进行休眠?

有人能刷新我的记忆中,从Windows上运行的程序的角度看有没有办法知道,如果当系统进入休眠模式或休眠状态,对吗? (我需要知道系统进入的模式,或刚刚恢复。)

+1

应该有一个标准的系统消息警告人们即将进入睡眠模式,所以需要准备的应用程序可以实际进行。那是什么,我不知道。 – 2012-08-14 00:55:50

+0

有一个,但程序可以告诉系统是否进入睡眠或休眠状态? – c00000fd 2012-08-14 00:57:22

+0

从技术上讲,两种状态之间没有太多的不同,除了处理器S状态,系统在以后结束。无论哪种方式,应用程序都没有运行,但休眠比纯粹的睡眠更“深入”。 – 2012-08-14 00:58:47

回答

5

从我所收集的内容来看,用户模式代码无法区分挂起和休眠。有一个名为SYSTEM_POWER_STATE的内核模式枚举,其中包含您正在查找的状态,但无法在用户模式下获取该状态。

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

+0

谢谢VoidStar。我想知道是否可以从本地服务中获得SYSTEM_POWER_STATE结构?我将如何使用它来作出区分? – c00000fd 2012-08-14 03:38:11

+2

请参阅[我的答案](http://stackoverflow.com/a/6187658/103167),这解释了为什么它不可能。 – 2012-08-14 03:41:39

+0

是的,谢谢。我想我看到你关于系统从一个状态转换到另一个状态的观点。但在这种情况下,操作系统首先报告它进入的状态,然后报告它恢复的状态,这不是很好。但是,我想这太过分了,不是吗? – c00000fd 2012-08-14 03:50:32

相关问题