我可以在C++中使用哪一行代码来禁用节能器?

Nat*_*nce 5 c++ winapi

我想阻止显示器进入睡眠状态(窗口设置,而不是显示器设置).我正在使用c ++.我打电话给谁?

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)

  • 很好地利用RAII (2认同)

Chr*_*isV 5

一种不像第一个响应那样修改全局系统状态的简单方法:

在窗口过程中,为其添加处理程序WM_SYSCOMMAND.当wParam为时SC_MONITORPOWER,返回0而不是延迟到DefWindowProc.(当wParam是任何其他值时,请确保您处理消息或将其传递给DefWindowProc.否则用户将无法在运行时调整窗口.)