前言
某显示器具有光传感器,宣传上说了此显示器根据环境亮度自动调整显示器背光亮度让眼睛更舒适。实际上开启了这个功能后,显示器的亮度确实会受到环境亮度的变化而变化,例如用杯子遮挡住一部分的显示器感光小窗口,显示器亮度就下降了,但是我在不同的网页,桌面和软件不同画面切换的时候,显示器也自动做出了很明显很夸张的亮度调整,这是几个意思?
思考
既然此显示器自动亮度调节不靠谱,既然大部分显示器都没有自动亮度调节,而显示器的亮度传感打开后就类似于有些显示器提供的“动态对比度功能”或者“DCB”功能,那么作为一个长期使用的显示器,就禁用吧。
动态对比度也不是没有用,笔者发现的一个比较靠谱的场景就是安装操作系统过程,或者使用Linux、dos类似的console窗口。在这个状态下,一个杂牌便携显示器会自动在画面黑底白字时加强背光亮度,而进入BIOS类似的更多像素不灰暗的场景降低亮度,非常有效的提升了阅读显示器内容的效率,效果非常不错。但是某大厂出品的显示器的动态对比度对显示器的控制逻辑是完全相反的,这是几个意思?这种状态的话只能禁用了,虽然这个显示器也不会用来安装系统。
未曾购买这款护眼显示器之前我从未考虑这个问题,通过显示器的快捷键在三个预设中切换亮度,符合白天与夜晚以及观影等不同场景对显示器亮度、对比度的需求。而购买了这款显示器之后,却用不上这个功能,总让我心里痒痒想要折腾下。
我知道通用协议,不论电脑通过什么接口连接显示器,VGA、DP、HDMI、DVI或其他端口,显示器会汇报自己的参数给电脑,便于电脑决定输出分辨率,不支持的显示器就会出现例如只有电脑能用,需要手动设定正确的分辨率,而连接例如安卓的电视机顶盒之类的会缺乏相应的参数导致完全无法使用。反过来说,电脑其实也是可以控制显示器的设置的,部分显示器厂商还为显示器开发了专用软件,在电脑上控制显示器设置,既然如此,那么我也来整一个。
一旦产生了这个想法,我就想起了ControlMyMonitor。nirsoft出品的小软件。网站开发者是一个精通C++、.NET的Windows应用开发与反编译大佬。网站名称的出处就是大佬的本名Nir Sofer。Windows原生小软件,体积小巧功能强大,这才是平台专用软件应该有的样子。又不是不能加皮肤。而某些大厂提供的软件安装量巨大,可能几年下来安装量上亿,而软件底层受限于一些API或者开发能力菜鸡?相对固定的软件让前端来开发,导致功能简单的小软件本身稳定性都没法保证,需要经常刷新下网页,才能让软件继续正常运行,一个简单的软件加入了浏览器变成了几百兆的怪物。国内的各种音乐播放器甚至连安装量天花板的QQ,在易主之后,也受到了被遗弃的孤儿那样的待遇,完全重开发,变成了浏览器应用。
动手
https://www.nirsoft.net/utils/control_my_monitor.html
https://www.nirsoft.net/utils/controlmymonitor.zip
#直接下载地址
https://www.nirsoft.net/utils/trans/controlmymonitor_schinese.zip
#翻译文件
https://www.nirsoft.net/utils/trans/controlmymonitor_schinese1.zip
#另一作者的翻译文件
下载地址。下载软件后解压得到一个ControlMyMonitor.exe。这就是软件的本体了。如果你不需要中文,那么就不需要汉化文件了,后续作为长期被调用的cli程序,软件本身并不出现本体,因此我就不下载翻译文件了。如果有需要的可以在页面上下载简体中文或者你需要的翻译文件,解压压缩包得到controlmymonitor_lng.ini,放在相同的目录,运行时就自动加载翻译文件了。
为了方便使用,你可以把软件放在一个固定的目录。至于笔者喜好,我将常用的“便携式”,免安装的软件都放在C:\Binary\软件名称路径。例如C:\Binary\ControlMyMonitor\ControlMyMonitor.exe。类似的还有Notepad3、Ditto、tftp32、aida64等超过100个软件,这些软件我都经常使用,经常更新常用常新,例如tftp32、nginx、Java runtime这种我需要自动运行的软件。
我常用的软件基本上都是原生Windows软件,因此这个文件夹总体大小还是比较小的,大多数程序其实在机械硬盘或者网络启动也不会有太大的问题。
页面上提供的翻译文件应该都是都是由各位热心的母语者翻译后提供给软件作者挂在网站上的。如何制作?非常简单。以将软件放在C:\Binary\ControlMyMonitor\目录为例:
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /savelangfile
然后就得到了一个完全英文的controlmymonitor_lng.ini。在这个基础上进行翻译吧。通过任何文本阅读器都能编辑,包括Windows自带的文本编辑器——记事本notepad.exe。
每个版本增加需要翻译内容的条目不多。所以低版本的配置文件大体上都是翻译了的,就是新增功能没有被翻译的部分会显示原始语言英文。
运行软件,会看到图上的页面。图片来自软件官网。不同显示器有不同的选项。下方是一些例子,结合图片里作者演示的程序内容。
#设置亮度为30%
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /SetValue "\\.\DISPLAY3\Monitor0" 10 30
#设置亮度为50%
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /SetValue "\\.\DISPLAY3\Monitor0" 10 50
正常来说,显示器的亮度位置都是10,因此只需要修改两个位置就可以了。一个是显示器的位置,一个是需要设置的亮度值。
以实际使用为例,将下方内容使用记事本等任意你喜欢的文本编辑器另存为30.bat。
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /SetValue "\\.\DISPLAY1\Monitor1" 10 30
再将下方内容另存为80.bat
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /SetValue "\\.\DISPLAY1\Monitor1" 10 80
这个例子是设置连接在核显的副屏。没有独显直出的笔记本电脑一般都是这个位置。数组开始为0,一般的电脑可能是"\\.\DISPLAY1\Monitor0",具体的数据可以运行软件后查看,稍作修改,准备工作就完成了。
分别双击运行两个批处理。会发现显示器的亮度变暗了,又变亮了。经过测试,可能你对最低亮度不够满意,觉得最低亮度太亮了,或者觉得最高亮度不够亮,怎么办?排除显示器控制范围内,除了亮度,我们还可以调节对比度。
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /SetValue "\\.\DISPLAY1\Monitor1" 10 0
以这个例子,可能亮度0与亮度30没有差距,那么就可以同时设置下对比度。
同时设置对比度和亮度
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /SetValue "\\.\DISPLAY1\Monitor1" 10 30
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /SetValue "\\.\DISPLAY1\Monitor1" 12 30
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /SetValue "\\.\DISPLAY1\Monitor1" 10 70
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /SetValue "\\.\DISPLAY1\Monitor1" 12 50
运行软件,确定了显示器的位置,之后就可以调整对比度亮度两个参数了。不断调试,获得自己不同使用场景、用途下需要的几组数值。
显示器只有在屏幕工作的状态才会显示,可以控制外部显示器,同样也可以控制笔记本电脑的内置显示器,工控机的内置屏幕。
如果连接了多显示器,或者笔记本电脑内外屏同步控制,可以在一个批处理内同时包含多个显示器的参数。如果有的显示器操作的时候没有连接,也不会出现问题。
除了设置对比度。还可以用于控制显示器切换输入源等操作。
能写入操作的选项就是能够对显示器进行的控制。同时软件可以对显示器当前的设置进行读取。
ControlMyMonitor.exe对显示器的控制设定就是这样。接下来就是具体怎么控制了。可以双击cmd文件直接调整,将不同的参数放置在特定的文件夹,或者开始菜单的某个文件夹,或者通过一些硬件或者软件的方式实现快捷键。例如通过某些键盘的专用程序,设置快捷键运行。或者通过更通用的Windows热键软件设置快捷键运行。台式机也能够像笔记本电脑那样通过快捷键调整屏幕的亮度了。
更多玩法
如果是笔记本电脑,可以设置内外屏跟随。通过笔记本电脑的快捷键设定内屏亮度的时候,软件读取内屏亮度并设置。
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /GetValue "\\.\DISPLAY1\Monitor1" 10
echo %errorlevel%
除了直接指定特定的亮度,还可以“调整”的方式。将两个增减操作绑定在两个快捷键,就可以实现类似笔记本电脑、品牌机拥有的亮度调整快捷键。
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /ChangeValue "\\.\DISPLAY1\Monitor1" 10 5
C:\Binary\ControlMyMonitor\ControlMyMonitor.exe /ChangeValue "\\.\DISPLAY1\Monitor1" 10 -5
除了"\\.\DISPLAY1\Monitor1"这样对显示器绝对位置的指定,还可以调整显示器的相对位置,例如Secondary这个词表示连接的副屏。不过受限于显示器是否启用等状态的影响,位置关系可能会受到影响,因此这个方法不做推荐。
软件对显示器设置,笔者常用的就是对亮度、对比度的控制,以及设定输入源。输入源的数字代表了不同的接口。写入不同的数字,就可以切换输入源了。不同的显示器对不同数字代表的接口是不同的。可以自己实际测试确定。完全相同型号的显示器,可能几个月的生产日期差异,厂商的固件也会有修改导致对不上。
关键字
EDID 读取屏幕参数
DDC/CI 对屏幕进行控制
标签:ControlMyMonitor,exe,Binary,显示器,亮度,软件,全自动 From: https://blog.51cto.com/infrado/6445731