如何检查系统是不是处于待机模式?

Posted

技术标签:

【中文标题】如何检查系统是不是处于待机模式?【英文标题】:How can I check to see if system is in standby mode?如何检查系统是否处于待机模式? 【发布时间】:2008-12-22 19:48:23 【问题描述】:

我想检查系统是否处于待机模式,是否有任何 Win32 API ?我不确定它是否与睡眠模式相同。

在我的应用程序中执行了一些代码,这导致它在退出待机状态时挂起(它在待机模式下执行),所以我想避免在计算机睡眠/待机时运行该代码.

提前致谢!

丹尼斯

编辑:也许这是不可能的,因为程序不应该像下面的答案中指出的那样运行,所以我会把它算作一个答案:)

【问题讨论】:

【参考方案1】:

当系统处于待机模式时,不会有任何程序在运行,这样就可以了:

int is_in_standby() 
  return 0;

还是我错过了什么?

【讨论】:

我的程序似乎正在运行,或者至少它被用户报告它弹出一个消息框(它应该,因为有一些需要注意的东西),但之后它完全挂起.我想知道系统是否处于待机状态并且没有出现该消息框。 saua 是对的;如果系统处于待机模式,那么您的应用甚至不会弹出。您的应用挂起可能是由于其他原因。 是的,理论上它不应该弹出,但实际上,当用户退出待机状态时 - 有一个盒子,它一定是在待机期间以某种方式出现的。我会尝试在我的机器上重现它... 我知道你在说什么,我以前见过(即使在休眠模式下,断电)。我的猜测是,在系统完全退出待机状态之前(不是在实际中,而是在返回期间),进程正在获取时间片。 是的,听起来不错。我怀疑这种状态可以检测到,可以吗?【参考方案2】:

据我所知,在 Windows 的待机模式下没有代码正在运行。除了RAM,一切都关闭了。您的代码中的错误可能是计算机再次唤醒后的窗口消息引起的。

【讨论】:

很可能是屏幕尺寸。我想知道它们是否在待机期间重置为 0x0,因为退出待机后的窗口位置(弹出窗口)位于左上角,而不是右下角。但是那个窗口不应该打开,因为代码不应该在待机状态下运行?【参考方案3】:

如果您的程序正在运行,您就不是处于待机状态。

我认为您想要做的是处理WM_POWERBROADCAST 消息。这些将告诉您系统何时更改电源状态,在 Vista 之前,您可以是邪恶的,如果您愿意,可以否决关机。

【讨论】:

以上是关于如何检查系统是不是处于待机模式?的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Messaging 是不是会向处于待机模式的设备发送消息?

Linux 休眠,挂起(待机),关机等几个命令的区别及如何实现;如何启用Ubuntu的休眠模式

平板电脑处于待机状态时,我的 GPS 应用程序是不是可以继续在后台运行?

第23章 RTX 低功耗之待机模式

笔记本如何在合上盖子后再打开时显示登录界面,而不是待机状态

打盹/待机功能如何影响位置更新?