c++ - SystemParametersInfo 和 ERROR_OPERATION_IN_PROGRESS

标签 c++ winapi windows-8 screensaver usermode

我正在编写这个用户模式可执行文件,它可以在登录用户的上下文中从 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_SYSCOMMANDSC_SCREENSAVE 消息发送到 GetDesktopWindow() 窗口。

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

相关文章:

c# - Mutex/Monitor 不适用于 C# 线程同步

c++ - 如何设置 code::blocks 以在目标链接器选项之前链接项目链接器选项?

c++ - 如何在 Windows 映射我的程序的 DLL 之前保留内存区域?

c++ - 鼠标点击坐标的索引是从0开始还是从1开始?

windows-8 - Windows 应用商店应用程序 : Change the icon of an AppBar Button?

xaml - 在 WinRT 上放大和缩小网格、图像(Metro 风格应用程序)

c++ - 在 Linux 上链接到我自己的共享库中的某些函数时出现问题

android - 无法在 Android 的单个 native C++ 库文件中使用多个函数

c++ - 如何使用 std::sort() 对指向值的 vector 进行排序?

windows - 发送/捕获 SIGTERM 的 Win32 API 模拟