有没有办法以编程方式编写 Windows 10 的“滤色器”功能脚本?

Nak*_*828 5 script automation colors color-profiles windows-10

我正在尝试让 Windows 10 模拟 Google 与 Android 9 一起发布的新“数字健康”功能。基本上它会在夜间将屏幕更改为灰度,以尝试并激励人们放下手机并前往睡觉。

当我了解到 Windows 10 的“滤色器”功能(它还允许您将颜色配置文件设置为灰度)时,我认为编写脚本可能很容易,但我似乎无法找到一种方法来做到这一点直接写脚本。

此刻,我基本上是通过打开工作Win+ Ctrl+C切换热键,并有计划任务设置为运行脚本的AutoHotkey基本上伤害到那些键触发快捷方式。这工作正常,但我希望能够禁用快捷键,这样我就不会不小心碰到它,或者有一种简单的方法来禁用该功能(并削弱“数字健康”效果)。此外,脚本无法知道设置的状态。如果它运行两次,它会自行撤消。目前,我没有为机器编写脚本来取消设置该功能,但是如果我创建了一个任务来执行此操作,并且在每晚触发之前关闭机器,则它可能会在早上变灰。

我的问题是询问是否有任何方法可以直接(通过 PowerShell、Batch、VBS 等)显式设置“颜色过滤器打开”或“颜色过滤器关闭”,而不依赖于快捷键,最好不要切换?

小智 4

所以我尝试了同样的事情,最终在灰度模式下使用了: https: //zerowidthjoiner.net/negativescreen,这很容易以编程方式触发。


在尝试之前,我遇到了一些有趣的事情。我尝试设置注册表项以启用颜色过滤:

 [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Accessibility]
"Configuration"="colorfiltering"

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig]

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\colorfiltering]
"Active"=dword:00000001
"FilterType"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\ColorFiltering]
"HotkeyEnabled"=dword:00000001
"Active"=dword:00000001
"FilterType"=dword:00000000
Run Code Online (Sandbox Code Playgroud)

这本身不起作用,因为未应用该设置。有趣的是,当我触发 UAC 弹出窗口时,将应用滤色器。所以通过调用

powershell Start-Process cmd.exe -Verb RunAs
Run Code Online (Sandbox Code Playgroud)

该设置可以通过编程方式应用。但这个解决方案很糟糕,因为会生成实际的 UAC 弹出窗口。

但是,如果有人知道强制窗口重绘的另一种方法(或打开 UAC 时发生的任何情况),则应该可以以编程方式应用更改的设置。