如何检测窗口是否会hibernate或暂停?
我在用
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler( SystemEvents_PowerModeChanged );
判断Windows何时挂起。 但我怎么知道它是进入hibernate还是暂停?
是否有.Net或PInvoke方法来执行此操作?
你不能分辨hibernate和suspend之间的区别。
这里有详细的讨论。
外卖的消息是,你的问题预先假定了一个错误的二分法:它可以是hibernate,暂停或混合睡眠……当混合睡眠从暂停转换为hibernate时,用户代码甚至没有运行(实际上可能没有运行代码) ,转换发生在断电的情况下)。
因此,当决定混合睡眠时,系统不知道它是从hibernate还是hibernate恢复,它不能告诉你它不知道什么。
根据MSDN ,e.Mode(您的事件处理程序应具有PowerChangedEventArgs e的第二个参数)的值将是“Resume”,“StatusChange”或“Suspend”之一的枚举。 但是,它似乎没有提供比这更详细的信息,因此假设如果状态为Suspend,则PC正在hibernate或hibernate。
HTH,
本杰明