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