尝试使用C ++打开显示设备句柄以在Windows XP上更改亮度

时间:2012-08-08 23:19:11

标签: c++ windows winapi monitor

我正在尝试编写C ++ / WinAPI代码来更改显示器亮度。代码必须与Windows XP兼容,因此我不能使用像SetMonitorBrightness这样的API。所以我想尝试IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS,但我似乎无法获得设备处理。

HANDLE hDevice = ::CreateFile(_T("\\\\.\\LCD"),
    GENERIC_READ | GENERIC_WRITE,
    FILE_SHARE_READ | FILE_SHARE_WRITE,
    NULL,
    OPEN_EXISTING,
    0, NULL);
if(hDevice != INVALID_HANDLE_VALUE)
{
    //Do work here

    ::CloseHandle(hDevice);
}
else
{
    nOSErr = ::GetLastError();
    //Get code 2
}

我尝试了GENERIC_READ,GENERIC_WRITE和FILE_SHARE_READ,FILE_SHARE_WRITE标志的各种组合,但是在调用CreateFile时我总是得到错误代码2。

那我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

您知道并非所有设备都支持此API,对吧?您的笔记本电脑可能支持它,因为它允许软件调整其屏幕亮度,甚至可能使用键盘上的功能键。您的其他计算机(运行Windows 7的计算机)可能不支持它,因此使用CreateHandle调用\\\\.\\LCD并不会给您带来任何帮助。它与操作系统无关,与硬件和/或视频驱动程序无关。