关掉显示器?

时间:2016-05-10 20:49:06

标签: c++ windows winapi

我有64位的Windows 10,我花了很多时间在屏幕后面编程。我需要不时休息一下,并通过使屏幕变黑来限制屏幕光线/辐射与我的头部碰撞好像关掉了。

我能做的就是掉到登录界面,但我需要看到黑色才能放心!我真正希望实现的是你在不活动时获得的黑屏。可以通过编程方式进行吗?

这是我到目前为止的代码:

#include <Windows.h>

#define KEY_DOWN(key) ((::GetAsyncKeyState(key) & 0x80000) ? 1 : 0)
#define KEY_UP(key)   ((::GetAsyncKeyState(key) & 0x80000) ? 0 : 1)

int main(void)
{
    // Hide the console window
    HWND hWnd;
    AllocConsole();
    hWnd = FindWindowA("ConsoleWindowClass", NULL);
    ShowWindow(hWnd, 0);

    //Press ctrl + alt + 'L' to lock / Press ctrl + 'E' to terminate the program
    while (1)
    {
        if (::GetAsyncKeyState('L') == -32767)
        {
            if (KEY_DOWN(VK_CONTROL) && KEY_DOWN(VK_MENU))
                LockWorkStation();
        }
        if (::GetAsyncKeyState('E') == -32767)
        {
            if (KEY_DOWN(VK_CONTROL))
                return 0;
        }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:5)

使用SC_MONITORPOWER消息的WM_SYSCOMMAND参数关闭显示器:

SendMessage(handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);

第四个参数的参数2关闭监视器。

另见https://msdn.microsoft.com/en-us/library/windows/desktop/ms646360(v=vs.85).aspx