sea*_*n e 13
class KeepDisplayOn
{
public:
KeepDisplayOn()
{
mPrevExecState = ::SetThreadExecutionState(ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED | ES_CONTINUOUS);
::SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, &mPrevScreenSaver, 0);
::SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, FALSE, NULL, 0);
}
~KeepDisplayOn()
{
::SystemParametersInfo(SPI_SETSCREENSAVETIMEOUT, mPrevScreenSaver, NULL, 0);
::SetThreadExecutionState(mPrevExecState);
}
private:
UINT mPrevScreenSaver;
EXECUTION_STATE mPrevExecState;
};
Run Code Online (Sandbox Code Playgroud)
一种不像第一个响应那样修改全局系统状态的简单方法:
在窗口过程中,为其添加处理程序WM_SYSCOMMAND.当wParam为时SC_MONITORPOWER,返回0而不是延迟到DefWindowProc.(当wParam是任何其他值时,请确保您处理消息或将其传递给DefWindowProc.否则用户将无法在运行时调整窗口.)
| 归档时间: |
|
| 查看次数: |
803 次 |
| 最近记录: |