我的c ++应用程序运行时如何防止窗口进入睡眠状态?

Pro*_*s08 8 c++ windows qt visual-studio

我用Qt和visual studio 2015开发了一个c ++应用程序.

我想知道如何在我的应用程序运行时阻止应用程序表单进入休眠状态.我的应用程序应该始终在后台运行并响应用户通过语音命令它.

我的应用程序运行时有没有阻止窗口进入睡眠状态?

dda*_*cot 13

SetThreadExecutionState函数

允许应用程序通知系统它正在使用中,从而防止系统在应用程序运行时进入睡眠状态或关闭显示屏.

在此处阅读有关API的更多信息:SetThreadExecutionState

例:

// The following sets the appropriate flags to prevent system to go into sleep mode.
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED);

// This clears the flags and allows the system to sleep normally.
SetThreadExecutionState(ES_CONTINUOUS);
Run Code Online (Sandbox Code Playgroud)

  • 程序中以比 Windows 进入睡眠的时间间隔更短的时间间隔重复调用该函数的任何地方都应该可以工作。你也可以有一个被调用一次的函数,它是一个无限循环,它调用 SetThreadExecutionState,然后等待 45 秒,重新开始循环(并再次调用 SetThread~ 函数),直到应用程序退出。 (2认同)

小智 7

Martin Bonner和ddacot推荐的API SetThreadExecutionState文档非常清楚地解释了这一点.

根据您的描述,您应该将以下函数放在main()中.

SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED);
Run Code Online (Sandbox Code Playgroud)

根据该文件,

  • ES_CONTINUOUS通知系统正在设置的状态应保持有效,直到下一次使用ES_CONTINUOUS并且其中一个状态标志被清除为止.

  • ES_SYSTEM_REQUIRED通过重置系统空闲计时器强制系统处于工作状态.

  • ES_AWAYMODE_REQUIRED强制媒体应用程序在后台运行,以便您可以通过语音呼叫应用程序.