Получить статус ночного режима в Windows 10

Я использую api для дублирования рабочего стола для захвата содержимого экрана, и, как оказалось, новый режим ночного освещения ("Nachtmodus" на немецком языке) не применяется к содержимому экрана захвата.

Как мне прочитать (если это возможно прямо в C#) статус ночного режима (включен, величина цветового сдвига)?

или же

Как я могу сказать Windows дать мне изображение со сдвигом цвета, используя API дублирования рабочего стола?

По сути, я хочу знать, что настроено внутри этих красных блоков:

Настройки ночного освещения (немецкий


Справочная информация: я работаю над реализацией Ambilight, и если включен режим ночного освещения, смещение цвета не отражается на светодиодах вокруг моего экрана, поэтому цвета не отображаются между содержимым экрана и "вокруг экрана".

4 ответа

Решение

Вы можете проверить вывод

GetDeviceGammaRamp

Функция из Win API. Сравните выходной сигнал с Night Light ON и OFF, и вы должны его обнаружить.

Или вы можете попробовать следить за этим ключом Reg на предмет изменений

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$$windows.data.bluelightreduction.settings\Current

Этот метод работает у меня в 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;
    }
}

Вы должны отслеживать другой ключ Reg для изменений

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$$windows.data.bluelightreduction.bluelightreductionstate\Current\Data

Я думаю, что нашел запись в реестре, которая отражает текущий статус ночника.

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

Хотя это не очень надежно, потому что я думаю, что для этого необходимо, чтобы этот конкретный переключатель был виден...

Другие вопросы по тегам