【发布时间】:2011-05-16 00:23:57
【问题描述】:
我正在使用
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(
SystemEvents_PowerModeChanged
);
告知 Windows 何时挂起。但是我怎么知道它是进入休眠还是挂起?
是否有 .Net 或 PInvoke 方法来执行此操作?
【问题讨论】:
我正在使用
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(
SystemEvents_PowerModeChanged
);
告知 Windows 何时挂起。但是我怎么知道它是进入休眠还是挂起?
是否有 .Net 或 PInvoke 方法来执行此操作?
【问题讨论】:
你无法区分休眠和挂起。
详细讨论here。
外卖信息是,您的问题预设了错误的二分法:它可以是休眠、挂起或混合睡眠......当混合睡眠从挂起转换到休眠时,用户代码甚至没有运行(实际上可能有没有代码运行,转换发生在断电的情况下)。
所以当混合睡眠的决定发生时,系统不知道它是从挂起还是从休眠中恢复,它不能告诉你它不知道什么。
【讨论】:
根据MSDN,e.Mode 的值(您的事件处理程序应该有第二个参数PowerChangedEventArgs e)将是“Resume”、“StatusChange”或“Suspend”之一的枚举。但是,它似乎没有提供比这更详细的信息,因此人们假设如果状态为 Suspend,则 PC 要么处于睡眠状态,要么处于休眠状态。
HTH,
本杰明
【讨论】: