WmiMonitorBrightness возвращает неверное значение яркости - PullRequest
1 голос
/ 07 января 2020

Я работаю над приложением Windows 10. Net, которое позволит пользователям устанавливать / регулировать яркость экрана системы. Как часть этого, мне нужно иметь возможность запросить, на что настроена текущая яркость экрана системы (что вы увидите, если откроете настройки Windows и перейдете к System-> Display, чтобы просмотреть ползунок, отображающий текущую систему яркость). Чтобы выполнить оба этих действия, обновить яркость и яркость запроса, я использую классы WMI WmiMonitorBrightnessMethods и WmiMonitorBrightness соответственно.

Установка яркости с помощью метода WmiSetBrightness класса WmiMonitorBrightnessMethods, кажется, всегда работает нормально. Однако при запросе яркости системы с помощью класса WmiMonitorBrightness у меня возникают проблемы. Проблема в том, что когда я использую WmiSetBrightness для установки яркости на заданное значение c, я вижу, что он работает нормально при подтверждении через пользовательский интерфейс Windows OS, но когда я запрашиваю изменение, которое я только что сделал с помощью WmiMonitorBrightness, я случайно получить неправильное значение.

Например, в своем тестировании я использую WmiSetBrightness, чтобы установить яркость на 95. Затем, когда я запрашиваю текущую яркость с помощью WmiMonitorBrightness, он возвращает значение яркости 93 (почему он возвращает это неожиданное ценность?). Я также подтвердил, что WmiSetBrightness возвращает, что на машине есть уровни яркости 1-100, поэтому установка яркости на 95 кажется, что она должна работать нормально.

Чтобы включить больше информации, эта проблема не присутствует в моем .Net / C# код для запроса яркости с помощью WmiMonitorBrightness, похоже, проблема с самим WmiMonitorBrightness. Я говорю это потому, что могу выполнять команды в PowerShell, используя те же классы WMI, чтобы обновлять и запрашивать яркость, а описанный выше пример сценария происходит таким же образом. Если я установил яркость на 95 с помощью WmiSetBrightness в PowerShell, запрос текущей яркости с помощью WmiMonitorBrightness в PowerShell вернет неверное значение.

# Example of WmiMonitorBrightness that returns the incorrect/unexpected value
Get-Ciminstance -Namespace root/WMI -ClassName WmiMonitorBrightness

Это также кажется проблемой только на некоторых компьютерах. Когда я запускаю эти команды PowerShell на моем ноутбуке HP, команда запроса WmiMonitorBrightness каждый раз работает нормально и возвращает ожидаемое значение. Однако, когда я делаю то же самое на двух разных ноутбуках Surface, которые у меня есть (оба работают под разными Windows версиями ОС), он возвращает неожиданное / неправильное значение.

Есть ли у кого-нибудь мысли о том, зачем запрашивать текущую систему? яркость с помощью WmiMonitorBrightness возвращает неожиданное значение?

...