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

if(!SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, nTimeoutSec, 0, 0))
{
    //Error
    GetLastError();
}

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


上面的代码在大多数情况下都可以使用,除了当我有多个用户登录Windows控制台时,我收到这个奇怪的错误ERROR_OPERATION_IN_PROGRESS。我查了documentation,它有以下解释:


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


好的,但是该如何处理该错误?

PS。这种情况最常见于Windows 8。

最佳答案

SPI_SETSCREENSAVEACTIVE可能会产生一些错误并且什么也不做。尝试将带有WM_SYSCOMMANDSC_SCREENSAVE消息发送到GetDesktopWindow()窗口。

关于c++ - SystemParametersInfo和ERROR_OPERATION_IN_PROGRESS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11928953/

10-09 04:11