如何检测窗口是否会休眠或暂停?

时间:2011-05-16 00:23:57

标签: c# winapi

我正在使用

SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(
    SystemEvents_PowerModeChanged
);

判断Windows何时挂起。但我怎么知道它是进入休眠还是暂停?

是否有.Net或PInvoke方法来执行此操作?

2 个答案:

答案 0 :(得分:9)

你无法分辨hibernate和suspend之间的区别。

详细讨论here

外卖的消息是,你的问题预先假定了一个错误的二分法:它可以是休眠,暂停或混合睡眠......当混合睡眠从暂停转换为休眠时,用户代码甚至没有运行(实际上可能存在)没有代码运行,在断电的情况下发生转换。)

因此,当决定进行混合睡眠时,系统不知道它是从休眠状态还是从休眠状态恢复,并且无法告诉您它不知道的内容。

答案 1 :(得分:1)

根据MSDN,e.Mode(您的事件处理程序应该有第二个参数PowerChangedEventArgs e)的值将是“Resume”,“StatusChange”或“暂停”。但是,它似乎没有提供比这更详细的信息,所以假设如果状态为Suspend,则PC正在休眠或休眠。

HTH,

本杰明