首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SystemParametersInfo和ERROR_OPERATION_IN_PROGRESS

SystemParametersInfo和ERROR_OPERATION_IN_PROGRESS
EN

Stack Overflow用户
提问于 2012-08-13 06:09:09
回答 2查看 854关注 0票数 1

我正在编写这个用户模式的可执行文件,它可以在登录用户的上下文中从Windows平台上的本地服务中运行。它的主要目的是配置所有登录用户的桌面。它调用以下API来设置屏幕保护程序:

代码语言:javascript
复制
if(!SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, nTimeoutSec, 0, 0))
{
    //Error
    GetLastError();
}

if(!SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, nActive, 0, 0))
{
    //Error
    GetLastError();
}

上面的代码在大多数情况下都是有效的,除非我有多个用户登录到Windows时,我得到了这个奇怪的错误ERROR_OPERATION_IN_PROGRESS。我查了一下文档,它有这样的解释:

如果机器已进入节电模式或系统锁定状态,则会发生ERROR_OPERATION_IN_PROGRESS异常。

好的,但是我该如何处理这个错误呢?

PS。这种情况在Windows 8上最常见。

EN

回答 2

Stack Overflow用户

发布于 2012-08-13 07:02:08

SPI_SETSCREENSAVEACTIVE可以产生一些错误而什么也不做。尝试向WM_SYSCOMMAND窗口发送带有SC_SCREENSAVE消息的GetDesktopWindow()

票数 0
EN

Stack Overflow用户

发布于 2016-05-12 21:55:00

好的,看起来这在Windows中是不可能的,尽管它没有在8+上显式地声明。

我的研究

它确实在另一篇针对SetThreadExecutionState的MSDN文章中声明,在Windows8上,ES_DISPLAY_REQUIRED标志不会唤醒屏幕。

Windows 8:此标志只能保持显示打开,不能打开当前关闭的显示器。

有一个用于删除活动屏幕保护程序的API调用(SETSCREENSAVEACTIVE确实声明了以下内容:

如果机器已进入节电模式或系统锁定状态,则会发生ERROR_OPERATION_IN_PROGRESS异常。

结论

系统没有处于锁定状态,也没有处于节能模式(使用储蓄,因此似乎8+机器无法唤醒屏幕。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11928953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档