65.9K
CodeProject 正在变化。 阅读更多。
Home

笔记本电脑和平板电脑的屏幕亮度控制

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.83/5 (26投票s)

2011年8月5日

CPOL

3分钟阅读

viewsIcon

89092

downloadIcon

13438

一个小型程序,用于快速调整笔记本电脑或平板电脑的屏幕亮度。

Screenshot

引言

使用这个小工具,您可以快速调整笔记本电脑或平板电脑的屏幕亮度。它还支持命令行参数,以满足您的需求。

背景

我最近买了一台平板电脑,但对如何改变屏幕亮度不太满意。因此,我在网上搜索了一个简单的解决方案 - 但没有成功。首先,我找到了 IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS 控制,但很多人都在努力用 C# 调用它 - 事实上,我只找到一个人似乎设法做到了……但这个帖子已经关闭,我找不到联系他的方法 - *lol* - 所以我尝试了一些人建议的另一种解决方法,结果搞砸了我的伽马和对比度设置 - 哈哈 - 最后我找到了 Samuel Lai 的这个页面 - 他使用 WMI 访问屏幕亮度控制制作了一个简单的侧边栏小工具,并提供了一些代码 - 有趣的是,在我搜索的过程中,我经常读到有人说 C# 中没有支持。后来,我意识到我应该仔细看看 IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS 控制 站点,因为微软在这里说这个控制不再受支持,应该使用 WmiMonitorBrightness 类... 好吧,无论如何 - 够了,别说了 :)

使用代码/程序

程序

我已经在 Win7 (x86) 上测试了这个程序 - 据我所知,它在普通 PC 上无法工作,因为它们没有为此所需的硬件支持。如果系统不兼容,将会弹出一个消息框,并且程序将会退出。

我使用 VS2010 和 .NET 4 构建 - 因此,您需要 .NET 4 才能运行该程序,并且需要 VS2010 才能更改代码... 也许您可以使用较低版本的 VS,但据我所知,设计器不兼容。

好的,当不带参数启动程序时,它将隐藏并在任务栏信息区中显示一个图标。单击该图标会显示滑块。右键单击该图标将打开一个退出弹出窗口。

参数

  • quit - 滑块会显示出来,并在不活动 4 秒后关闭。
  • show - 滑块会显示出来,并在不活动 4 秒后隐藏。
    实际上,您可以输入任何内容来获得此结果 - 除非它未在此处列为参数...^^
  • hide - 将最初隐藏表单 - 这仅在与亮度级别语句结合使用时才有用
  • brightnesslevel in % - 您可以传递一个级别语句以立即设置亮度(例如 25%)- 如果参数不在级别数组中,则该级别将设置为下一个更高的可用级别

参数由空格分隔!
例如:ScreenBrightness 10% quit
ScreenBrightness hide 55%
参数的顺序无关紧要。

代码

好的,我已经使用了来自 Samuel Lai 的 WMI 查询,并封装了视觉效果...
WmiMonitorBrightness 类提供了一些关于实际亮度设置的只读属性:ActiveCurrentBrightnessInstanceNameLevelLevels

一个值得关注的点可能是 Level 属性,因为它是由硬件支持的有效 brightnesslevels 数组。它们可能因机器而异。例如,我的笔记本电脑只有 7 个级别,而我的平板电脑有 10 个。

我的应用程序只支持一个屏幕 - 如果您有多个屏幕,则需要分别查询每个屏幕,正如我所理解的……虽然我看不到设置单个屏幕亮度的方法……?

WmiMonitorBrightnessMethods 类 用于通过 WmiSetBrightness 方法 设置屏幕亮度。

到目前为止,希望您会喜欢它! :)
祝好,
Stephan

历史

  • 2011 年 8 月 4 日:初始版本
  • 2011 年 8 月 6 日:小更新
    • 在图标的工具提示文本中包含实际亮度值
    • 打开窗体或将鼠标移动到图标上时,窗体的实际亮度值将刷新
© . All rights reserved.