社区
硬件/系统
帖子详情
程序控制笔记本的背光亮度
litomboy
2010-01-05 02:41:48
请教高手如何获得当前的笔记本的背光亮度,程序控制笔记本的背光亮度,高手做过此方面的指点下是否有此类的API函数,我要的不是在当前亮度下调节对比度,而是得到当前的背光亮度,我们的数据是在EC空间内,但是在VISTA和WIN7下,要是得到此值必须以管理员的权限运行,可是不能手动运行。做过此方面的高手指点下,要是写驱动读写数据的话,在VISTA和WIN7下能否越过UAC,因为我们的程序要出货的,说白了就是OSD软件的背光亮度控制程序。
...全文
725
8
打赏
收藏
程序控制笔记本的背光亮度
请教高手如何获得当前的笔记本的背光亮度,程序控制笔记本的背光亮度,高手做过此方面的指点下是否有此类的API函数,我要的不是在当前亮度下调节对比度,而是得到当前的背光亮度,我们的数据是在EC空间内,但是在VISTA和WIN7下,要是得到此值必须以管理员的权限运行,可是不能手动运行。做过此方面的高手指点下,要是写驱动读写数据的话,在VISTA和WIN7下能否越过UAC,因为我们的程序要出货的,说白了就是OSD软件的背光亮度控制程序。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
迷恋郭德纲
2010-11-26
打赏
举报
回复
5楼这段代码的实例能否共享??
wangk
2010-01-19
打赏
举报
回复
GetMonitorBrightness系列操作需要发控制码给显示设备的驱动,如果设备驱动不回应的话,肯定是得不到正确值的。
这个问题你应该找设备供应商寻求支持,最好可以直接从他们那边拿SDK和Sample。
litomboy
2010-01-19
打赏
举报
回复
CSDN 的高手,冒个泡啊!期待你们的指点!
litomboy
2010-01-14
打赏
举报
回复
谢谢,非常的感谢,我现在找到解决的办法了,现在EC做了控制背光亮度的功能了,也就是说系统能支持这项功能了,可是我现在当前亮度的值还是取不出来,按常规来说 应该能取出来的.下面的API函数 高手有接触到的没?
VISTA系统下提供了一些高层的API可以方便地控制屏幕的亮度、色温、对比度、显示区等。这些API定义在HighLevelMonitorConfigurationAPI.h中,库为dxva2.lib。在对屏幕操作前需要获得其句柄,操作完后要释放。这里分别以GetPhysicalMonitor和FreePhysicalMonitor实现。
void FreePhysicalMonitor(DWORD npm, LPPHYSICAL_MONITOR ppm)
{
DestroyPhysicalMonitors(npm, ppm);
// Free the array.
free(ppm);
}
LPPHYSICAL_MONITOR GetPhysicalMonitor(DWORD *pnpm)
{
HMONITOR hMon = NULL;
hMon = MonitorFromWindow(NULL, MONITOR_DEFAULTTOPRIMARY);
LPPHYSICAL_MONITOR ppm = NULL;
DWORD npm = 0;
BOOL bRet = GetNumberOfPhysicalMonitorsFromHMONITOR(hMon, &npm);
if (bRet) {
ppm = (LPPHYSICAL_MONITOR)malloc(npm * sizeof(PHYSICAL_MONITOR));
if (ppm) {
bRet = GetPhysicalMonitorsFromHMONITOR(hMon, npm, ppm);
if (!bRet) {
FreePhysicalMonitor(npm, ppm);
ppm = NULL;
npm = 0;
}
}
}
*pnpm = npm;
return ppm;
}
返回的是PHYSICAL_MONITOR数组,以下示例只是使用了第一个PHYSICAL_MONITOR元素。
1、调整屏幕前我们可以看看显示器支持什么功能
Vista提供的API是GetMonitorCapabilities(在有些显示器上虽然GetMonitorCapabilities调用失败,但仍然可以调整亮度等;在有些显示器上,从GetMonitorCapabilities返回的值看可以支持某些功能,但实际又不能。这些都另当别论)。
LPPHYSICAL_MONITOR ppm = 0;
ppm = GetPhysicalMonitor();
if (ppm) {
DWORD nmc = 0, nct = 0;
GetMonitorCapabilities(ppm->hPhysicalMonitor, &nmc, &nct);
CString str = _T("");
if (nmc & MC_CAPS_BRIGHTNESS) {
str += _T("Support brightness control\n");
}
if (nmc & MC_CAPS_COLOR_TEMPERATURE) {
str += _T("Support color temperature\n");
}
if (nmc & MC_CAPS_CONTRAST) {
str += _T("Support contrast\n");
}
.........
if (str == _T(""))
str = _T("Support None");
MessageBox(str);
FreePhysicalMonitor(npm, ppm);
}
2、如何调整亮度
LPPHYSICAL_MONITOR ppm = 0;
DWORD npm = 0;
ppm = GetPhysicalMonitor(&npm);
if (ppm) {
DWORD nMin = 0, nCur = 0, nMax = 0;
GetMonitorBrightness(ppm->hPhysicalMonitor, &nMin, &nCur, &nMax);
CString str;
str.Format(_T("Min:%d, Cur:%d, Max:%d"), nMin, nCur, nMax);
MessageBox(str);
SetMonitorBrightness(ppm->hPhysicalMonitor, nMin);
Sleep(1000);
SetMonitorBrightness(ppm->hPhysicalMonitor, nMax);
Sleep(1000);
SetMonitorBrightness(ppm->hPhysicalMonitor, nCur);
Sleep(1000);
FreePhysicalMonitor(npm, ppm);
}
3、调色温
LPPHYSICAL_MONITOR ppm = 0;
DWORD npm = 0;
ppm = GetPhysicalMonitor(&npm);
if (ppm) {
SetMonitorRedGreenOrBlueGain(ppm->hPhysicalMonitor, MC_RED_GAIN, 50);
Sleep(500);
SetMonitorRedGreenOrBlueGain(ppm->hPhysicalMonitor, MC_GREEN_GAIN, 49);
Sleep(500);
SetMonitorRedGreenOrBlueGain(ppm->hPhysicalMonitor, MC_BLUE_GAIN, 52);
MessageBox(_T("Set color temperature => Done"));
FreePhysicalMonitor(npm, ppm);
}
4、调对比度
LPPHYSICAL_MONITOR ppm = 0;
DWORD npm = 0;
ppm = GetPhysicalMonitor(&npm);
if (ppm) {
DWORD nMin, nCur, nMax;
GetMonitorContrast(ppm->hPhysicalMonitor, &nMin, &nCur, &nMax);
CString str;
str.Format(_T("Min:%d, Cur:%d, Max:%d"), nMin, nCur, nMax);
MessageBox(str);
SetMonitorContrast(ppm->hPhysicalMonitor, nMin);
Sleep(1000);
SetMonitorContrast(ppm->hPhysicalMonitor, nMax);
Sleep(1000);
SetMonitorContrast(ppm->hPhysicalMonitor, nCur);
Sleep(1000);
FreePhysicalMonitor(npm, ppm);
}
5、查看显示器类型
LPPHYSICAL_MONITOR ppm = 0;
DWORD npm = 0;
ppm = GetPhysicalMonitor(&npm);
if (ppm) {
TCHAR *descs[] = {
_T("Shadow-mask cathode ray tube (CRT)"),
_T("Aperture-grill CRT"),
_T("Thin-film transistor (TFT) display"),
_T("Liquid crystal on silicon (LCOS) display"),
_T("Plasma display"),
_T("Organic light emitting diode (LED) display"),
_T("Electroluminescent display"),
_T("Microelectromechanical display"),
_T("Field emission device (FED) display")
};
MC_DISPLAY_TECHNOLOGY_TYPE dtt;
GetMonitorTechnologyType(ppm->hPhysicalMonitor, &dtt);
CString str;
str.Format(_T("Technology type: %s"), descs[(int)dtt]);
MessageBox(str);
FreePhysicalMonitor(npm, ppm);
}
6、恢复出厂设置
LPPHYSICAL_MONITOR ppm = 0;
DWORD npm = 0;
ppm = GetPhysicalMonitor(&npm);
if (ppm) {
RestoreMonitorFactoryDefaults(ppm->hPhysicalMonitor);
FreePhysicalMonitor(npm, ppm);
}
oyljerry
2010-01-12
打赏
举报
回复
vista,win7上面加强了安全属性,所以需要Admin权限的程序就需要跳UAC通知用户,你做成驱动,权限是够了,但是你安装驱动等,也是需要admin权限的,否则无法安装成功。
所以最终会过来,你可以把你的exe,嵌入requireAdministrator的manifest,这样用户双击exe的时候,就会自动跳UAC,让用户允许...
litomboy
2010-01-12
打赏
举报
回复
我晕,我都发布了这么长时间了,CSDN的 高手就可怜可怜我吧,我现在找到方法了,可是GetMonitorBrightNess() 不知道为什么得不到值 高手 指点下吧!!!
liulwn
2010-01-05
打赏
举报
回复
估计没硬件的API接口文档做不了。
sandyandy
2010-01-05
打赏
举报
回复
帮顶
vc调节显示器
背光
亮度
用vc++
程序
SetDeviceGammaRamp实现
笔记本
显示器
背光
亮度
的调节。刚做的项目例程
fake-backlight:使用xbacklight或xrandr自动
控制
背光
亮度
假
背光
假
背光
不需要存在,但是确实存在。 fake-backlight伪造您的显示器的
背光
源,因为.. 您无法在Linux中以其他任何方式对其进行
控制
ACPI很难 您的OEM很烂 你的眼睛受伤了 生活是痛苦的 这到底是什么? 如果您拥有某些制造商提供的尖端
笔记本
电脑,则可能无法
控制
背光
亮度
。 您可能尝试了一百种随机黑客手段,但都无济于事,Linux也没有针对您系统的神秘驱动
程序
。 如果您有一个/ sys / class / backlight / acpi_video0,但是它什么也没做,那么伪
背光
可以帮助您,直到有人弄清楚您的OEM经历了什么疯狂的思考过程,才得出他们决定不支持ACPI标准的决定。 希望开发人员在没有任何文档的情况下尝试解决该问题,不会在此过程中丧生。 fake-backlight与GNOME一起使用,当您使用热键或其他方法更改
背光
时,将使用xbackligh
【企业定制课】AI软件illustratorCC应用与平面印刷视频教程
AI软件illustratorCC应用与平面印刷视频...固态硬盘 显示器:15.4 英寸 (对角线) LED
背光
显示屏 一般推荐
笔记本
(设计本/游戏本均可) 屏幕13寸以上,I5/I7 CPU,8G以上内存,4G以上独显,320G以上硬盘,有线/无线
soft-brightness:Gnome-shell扩展
程序
可通过Alpha覆盖层(而不是
背光
)来管理显示器的
亮度
柔和
亮度
Gnome Shell扩展 概述 柔和的
亮度
使用Alpha叠加层来
控制
所有或某些监视器的
亮度
。 它可以平滑集成,并且不会干扰其他Gnome Shell功能。 它(只要它们是由侏儒壳牌发起的)与夜灯,从无障碍服务放大镜,或者屏幕捕捉完美的作品。 常见用途是: 您的
笔记本
电脑没有
背光
,可能是因为不支持
背光
,或者您有OLED显示屏。 您希望像使用内置屏幕一样
控制
外部显示器的
亮度
级别。 奖励功能: 最低
亮度
:不要在黑暗中迷路。 可以随时以无撕裂(VSync)模式操作外壳。 拍摄屏幕快照时,暂时禁用自身。 Gnome-Shell 40.0的已知问题: Gnome Shell 40.0在光标处理中存在一个错误,该错误阻止“软
亮度
”将
亮度
应用于鼠标光标。 在Gnome Shell 40.0上,光标将始终以全
亮度
显示,直到问题解决(扩展名已更新)为止。 。 配置 柔和的
亮度
带
MacBook 自动光线传感器守护进程_C语言_代码_相关文件_下载
lightum - MacBook 自动光传感器守护
程序
2011-2012 Pau Oliva Fora - pof[at]eslack(.)org Lightum 是一个守护进程,用于
控制
基于 MacBook 的
笔记本
电脑上的键盘
亮度
和屏幕
背光
。 默认情况下,它将以“自动”模式运行,这意味着它将自动从环境光传感器(位于 iSight 摄像头上)读取数据: 点亮或降低键盘
亮度
点亮或调暗视频
背光
当计算机在可配置的秒数内未使用时,它还会使键盘
亮度
和屏幕
背光
变暗。 如果您选择在“手动”模式下运行它,它不会查询环境光传感器,而是使用您使用功能键手动设置的
亮度
和
背光
值。 更多详情、使用方法,请下载后细读README.md文件
硬件/系统
2,641
社区成员
17,239
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章