我正在尝试编写 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。
那么我做错了什么?
最佳答案
您知道并非所有设备都支持此 API,对吗?您的膝上型电脑可能支持它,因为它允许软件调整其屏幕亮度,甚至可能使用键盘上的功能键。您的另一台机器(运行 Windows 7 的机器)可能不支持它,因此使用 \\\\.\\LCD
调用 CreateHandle
不会给您带来任何用处.它与操作系统无关,与硬件和/或视频驱动程序有关。
关于c++ - 尝试打开显示设备句柄以使用 C++ 在 Windows XP 上更改亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11874615/