我正在编写此用户模式可执行文件,该可执行文件可以在已登录用户的上下文中从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_SYSCOMMAND
的SC_SCREENSAVE
消息发送到GetDesktopWindow()
窗口。
关于c++ - SystemParametersInfo和ERROR_OPERATION_IN_PROGRESS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11928953/