我正在尝试编写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。
那我在这里做错了什么?
答案 0 :(得分:1)
您知道并非所有设备都支持此API,对吧?您的笔记本电脑可能支持它,因为它允许软件调整其屏幕亮度,甚至可能使用键盘上的功能键。您的其他计算机(运行Windows 7的计算机)可能不支持它,因此使用CreateHandle
调用\\\\.\\LCD
并不会给您带来任何帮助。它与操作系统无关,与硬件和/或视频驱动程序无关。