设置背光亮度问题
BOOL SetBackLightLevel(DWORD dwLevel)
{
BOOL bRet = FALSE;
DWORD dwRet;
HANDLE h = CreateFile(TEXT( "BKL1: "), GENERIC_READ|GENERIC_WRITE, 0,0,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);
if (h != INVALID_HANDLE_VALUE)
{
if ( DeviceIoControl(h, 2 , &dwLevel, sizeof(DWORD), 0,0, &dwRet, 0))
{
MessageBox(hWnd,L "设置背光灯亮度成功 ", L "error ",MB_OK);
bRet = TRUE;
}
else
MessageBox(hWnd,L "设置背光灯亮度失败 ", L "error ",MB_OK);
CloseHandle(h);
}
else
MessageBox(hWnd,L "打开文件失败 ",L "error ",MB_OK);
return bRet;
}
我在多普达818上测试 提示 "设置背光灯亮度失败 ".
同样 DeviceIoControl(h, 1 , 0, 0, &dwOut, sizeof(DWORD), &dwRet, 0) 获取背光灯亮度等级也是失败.
谁帮我看看问题出在哪里?
[解决办法]
你的 DeviceIOControl()函数中传递的2或者1是什么意思呢?
在Backlight driver 的IOCTRL 函数中,有支持你的2或者1的分支吗?
我想是没有的
要对一个设备的电源状态进行调整,我想应该是调用 PM 的IOCTL 吧
比如
IOCTL_POWER_SET 诸如此类的。
不知道说的对不对
大家交流一下,3Q!
再者我认为你调整背光亮度的方式有点问题,所有对设备电源状态的改变,我认为都应该通过PM来实现,而不是你直接去操作设备。
[解决办法]
SetPowerRequirement?楼主这个背景亮度调整搞定了没
[解决办法]
楼主的问题我以前遇到过,问了DOPOD的技术,他们说系统可能没实现这个接口。
http://www.3snews.net/index.php/111/action_viewspace_itemid_2315.html
这篇文章会帮助你的。
[解决办法]
借地问一个问题:
背景灯的亮度能任意设置吗?
比如说,dopod 838 的背光强度只有5个级别,0(不亮),1(最暗),……4(最亮)。
能不能通过程序修改级别1的背光强度,比如说让他更暗一些但又不是关闭?因为这个亮度在夜间还是太刺眼了,我希望能修改地更柔和一些。
是不是838的硬件接口不支持这个修改呢?
[解决办法]
7楼同问
[解决办法]
同上
[解决办法]
我是7楼,我又回来了。
背光太亮的问题解决了,我翻出来一个很旧的墨镜,效果很好。
[解决办法]
通过直接修改注册表的backlight中的参数可以吗?不过这个方法只能针对特定机型
[解决办法]
都是很好的建议! 值得学习
[解决办法]
6楼同志,你给的地址哪有什么这样的文章啊.
我遇到和楼主同样的问题,用DeviceIoControl提示失败,
用SetPowerRequirement提示成功,但是背光没变化.
没招了,高手速度帮忙啊,小弟不胜感激!!
[解决办法]
哥们,改注册表才是正道。
注册的信息在:HKEY_CURRENT_USER\ControlPanel\BackLight里面的Brightness。
改完记得刷一下信息:
BOOL NotifyChange(){ //Gets the handle to the power manager reload activity timeout event HANDLE hevReloadActivityTimeouts=OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ReloadActivityTimeouts")); //If we got valid one then invoke the event if (hevReloadActivityTimeouts) { SetEvent(hevReloadActivityTimeouts); //Set the state of the event to Signal CloseHandle(hevReloadActivityTimeouts); //close the handle of the event return TRUE; } return FALSE;}