7

我正在使用桌面复制 api来抓取屏幕内容,事实证明,新的夜灯模式(德语中的“Nachtmodus”)并未应用于抓取的屏幕内容。

如何读取(如果可能直接在 C# 中)夜间模式状态(启用,颜色偏移量)?

或者

如何告诉 Windows 使用桌面复制 api 给我颜色偏移的图像?

基本上,我想知道这些红框中的配置状态:

夜灯设置(德语)


背景:我正在研究流光溢彩的实现,如果启用了夜灯模式,颜色偏移不会反映在我屏幕周围的 LED 中,因此屏幕内容和“屏幕周围”之间的颜色会关闭。

4

3 回答 3

4

此方法适用于 Windows 10 版本 2004

private static bool IsNightLightEnabled()
{
    const string BlueLightReductionStateKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\CloudStore\Store\DefaultAccount\Current\default$windows.data.bluelightreduction.bluelightreductionstate\windows.data.bluelightreduction.bluelightreductionstate";
    using (var key = Registry.CurrentUser.OpenSubKey(BlueLightReductionStateKey))
    {
        var data = key?.GetValue("Data");
        if (data is null)
            return false;
        var byteData = (byte[])data;
        return byteData.Length > 24 && byteData[23] == 0x10 && byteData[24] == 0x00;
    }
}
于 2021-05-01T20:19:56.813 回答
3

您可以检查的输出

GetDeviceGammaRamp

来自 Win API 的函数。将输出与夜灯 ON 和 OFF 进行比较,您应该可以检测到它。

或者您可以尝试监视此 Reg 键的更改

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$$windows.data.bluelightreduction.settings\Current
于 2017-05-13T13:55:39.703 回答
0

我想我找到了反映当前夜灯状态的注册表项。

[HKEY_CURRENT_USER\Control Panel\Quick Actions\Control Center\QuickActionsStateCapture]
"Toggles"="Toggles,...,Microsoft.QuickAction.BlueLightReduction:true,..."

虽然它不是很可靠,因为我认为它要求这个特定的切换应该是可见的......

于 2020-10-13T17:01:42.047 回答