使用C++应用程序阻止Windows 10/11进入现代待机模式?

dtcbnfnu  于 2022-12-24  发布在  Windows
关注(0)|答案(1)|浏览(149)

我需要延迟现代待机模式,直到我的应用程序执行一些操作。目前我正在使用EvtSubscribe捕获现代待机事件,并且在回调函数中,我的应用程序执行一些操作。但有时候在现代待机退出期间调用事件回调。我怀疑操作系统暂停应用程序活动,并在现代待机退出后恢复。是否有任何解决方案可用于延迟操作系统进入现代待机?

LPCWSTR pwsPath = L"System";
LPCWSTR pwsQuery = L"(*[System[(EventID=\"####\")]])"; // #### will be replaced with actual event in the original code

_ghCSEventsSubscription = EvtSubscribe(NULL, NULL, pwsPath, pwsQuery, NULL, NULL,
        (EVT_SUBSCRIBE_CALLBACK)CSEventsSubscriptionCallback, EvtSubscribeToFutureEvents);
woobm2wo

woobm2wo1#

我不确定这是否适合您的用例,但是我已经成功地使用SetThreadExecutionState()(more info)来保持系统活动并登录,而其他任务在后台运行,这是不可能的(有问题的系统具有防止禁用睡眠/注销模式的安全性)

#include <iostream>
#include <Windows.h>
int main()
{
    SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED);
    system("pause");
    return 1;
}

请让我知道这是否对您有帮助,或者您的问题是否与我的理解不同。

相关问题