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

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

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

Solutions Collecting From Web of "尝试打开显示设备句柄以使用C ++在Windows XP上更改亮度"

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