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

Winapi 如何检查系统是否处于待机模式?,winapi,visual-c++,mfc,Winapi,Visual C++,Mfc,我想检查系统是否处于待机模式,是否有任何Win32 API用于此?我不确定它是否与睡眠模式相同 我的应用程序中有一些代码会被执行,这会导致它在退出待机状态时挂起(在待机模式下执行),因此我希望避免在计算机处于睡眠/待机状态时运行这些代码 提前谢谢 丹尼斯 编辑:也许这是不可能的,因为程序不应该像下面的答案中指出的那样运行,所以我将其作为一个答案:)当系统处于待机模式时,则不会有程序运行,所以以下几点可以: int is_in_standby() { return 0; } 还是我遗漏了什么

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

我的应用程序中有一些代码会被执行,这会导致它在退出待机状态时挂起(在待机模式下执行),因此我希望避免在计算机处于睡眠/待机状态时运行这些代码

提前谢谢

丹尼斯


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

当系统处于待机模式时,则不会有程序运行,所以以下几点可以:

int is_in_standby() {
  return 0;
}

还是我遗漏了什么?

当系统处于待机模式时,将不会有任何程序运行,因此以下操作正常:

int is_in_standby() {
  return 0;
}

还是我遗漏了什么?

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

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

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


我想你要做的是处理这些信息。这些将告诉您系统何时更改电源状态,在使用Vista之前,如果您愿意,您可以选择禁用并否决关机。

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


我想你要做的是处理这些信息。这些将告诉您系统何时更改电源状态,在使用Vista之前,如果您愿意,您可以使用恶意软件并否决断电。

我的程序似乎正在运行,或者至少有用户报告它会弹出一个消息框(这是应该的,因为有一些事情需要注意),但之后它会完全挂起。我想知道系统是否处于待机状态,并且没有弹出消息框;如果系统处于待机模式,那么你的应用程序甚至不会弹出窗口。你的应用程序挂起可能是由于其他原因。是的,理论上它不应该弹出,但在实践中,当用户退出待机状态时,会有一个框,它一定是在待机状态下出现的。我将尝试在我的机器上复制它…我知道你在说什么,我以前见过(即使在休眠模式下,断电)。我的猜测是,在系统完全退出待机状态之前(不是在系统实际运行时,而是在返回过程中),进程会得到时间片。是的,听起来不错。我怀疑这种状态是否能被检测到,是吗?我的程序似乎正在运行,或者至少有用户报告它会弹出一个消息框(应该是这样的,因为有一些东西需要注意),但在那之后它就完全挂起了。我想知道系统是否处于待机状态,并且没有弹出消息框;如果系统处于待机模式,那么你的应用程序甚至不会弹出窗口。你的应用程序挂起可能是由于其他原因。是的,理论上它不应该弹出,但在实践中,当用户退出待机状态时,会有一个框,它一定是在待机状态下出现的。我将尝试在我的机器上复制它…我知道你在说什么,我以前见过(即使在休眠模式下,断电)。我的猜测是,在系统完全退出待机状态之前(不是在系统实际运行时,而是在返回过程中),进程会得到时间片。是的,听起来不错。我怀疑这种状态能被检测到,是吗?很可能是屏幕尺寸。我想知道它们是否在待机状态下重置为0x0,因为退出待机状态后的窗口位置(弹出窗口)位于左上角,而不是右下角。但是这个窗口不应该打开,因为代码不应该在待机状态下运行?很可能是屏幕尺寸。我想知道它们是否在待机状态下重置为0x0,因为退出待机状态后的窗口位置(弹出窗口)位于左上角,而不是右下角。但是这个窗口不应该打开,因为代码不应该在待机状态下运行?