我想寫一個C++/WinAPI代碼來改變顯示器的亮度。代碼必須與Windows XP兼容,所以我不能使用像SetMonitorBrightness這樣的API。所以我想試試IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS,但我似乎甚至得不到設備句柄。試圖打開顯示設備句柄來改變使用C++的Windows XP的亮度
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標誌的各種組合,但我總是得到錯誤代碼2時的CreateFile調用。
那麼我在這裏做錯了什麼?
當我嘗試時,我得到一個有效的句柄。 – Neil 2012-08-08 23:32:20
我剛剛在Windows Vista(筆記本電腦)上試過,並且獲得了有效的句柄。任何想法爲什麼它不適用於我的Windows 7機器? – ahmd0 2012-08-08 23:46:56
對不起,我沒有試用Windows 7的機器;我想我可以啓動一個Windows 8預覽虛擬機,但是我不得不在其上加載一些東西。 – Neil 2012-08-09 00:09:36