0

我正在尝试编写 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。

那么我在这里做错了什么?

4

1 回答 1

1

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

于 2012-08-09T01:08:02.960 回答