我正在编写这个用户模式可执行文件,它可以在登录用户的上下文中从 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它有这样的解释:
If the machine has entered power saving mode or system lock state, an ERROR_OPERATION_IN_PROGRESS exception occurs.
好的,但是我该如何处理这个错误呢?
附言。这种情况最常发生在 Windows 8 上。
SPI_SETSCREENSAVEACTIVE
会产生一些错误并且什么都不做。尝试发送 WM_SYSCOMMAND
将 SC_SCREENSAVE
消息发送到 GetDesktopWindow()
窗口。
我是一名优秀的程序员,十分优秀!