Winapi 为什么SetThreadExecutionState(需要ES_系统_)会阻止显示器断电?

Winapi 为什么SetThreadExecutionState(需要ES_系统_)会阻止显示器断电?,winapi,sleep,suspend,Winapi,Sleep,Suspend,我试图在关闭显示器的同时打开系统,在无人值守的情况下完成下载。为此,我呼吁: SetThreadExecutionState(ES_SYSTEM_REQUIRED); 每当我从下载中获得数据时。但是,这似乎也可以防止显示器断电(显示器会根据其配置的调光计时器变暗,但不会完全关闭)。根据,只有当我也通过了ES\u DISPLAY\u REQUIRED,才会发生这种情况-为什么它会被阻止 请注意,当我停止调用SetThreadExecutionState时,显示器不会再次断电;我必须终止程序才能关

我试图在关闭显示器的同时打开系统,在无人值守的情况下完成下载。为此,我呼吁:

SetThreadExecutionState(ES_SYSTEM_REQUIRED);
每当我从下载中获得数据时。但是,这似乎也可以防止显示器断电(显示器会根据其配置的调光计时器变暗,但不会完全关闭)。根据,只有当我也通过了
ES\u DISPLAY\u REQUIRED
,才会发生这种情况-为什么它会被阻止

请注意,当我停止调用
SetThreadExecutionState
时,显示器不会再次断电;我必须终止程序才能关闭显示器。然而,如果用
ES_CONTINUOUS
调用,它不应该只有持久的效果吗


如果有必要的话,我正在使用Windows7。目前我无法在其他版本上进行测试…

没关系-它似乎不在我的代码中:)

如果在没有ES_CONTINUOUS的情况下调用此函数,它将不会继续计算系统和监视器的空闲计时器。因此,必须通过ES_CONTINUOUS的组合传递参数。例如,你可以打电话 SetThreadExecutionState(需要ES|U系统| ES|U连续); 而不是
SetThreadExecutionState(需要系统)

嗨,这不是我最初的问题-但是问题的前提是有缺陷的,所以我会请求mods删除这个问题。