Я разрабатываю приложение для Windows 8. Есть ли способ получить доступ к настройкам яркости устройства, чтобы пользователь мог регулировать яркость устройства из приложения? Спасибо
Отрегулируйте яркость экрана в приложении Windows 8
Ответы (2)
Я использовал пакетный файл, чтобы что-то изменить, но также похоже, что Windows предоставила API, который вы можете использовать непосредственно из С# (ну, p/Invoke, а затем вызвать)... так что все вышеперечисленное по-прежнему верно и будет работать, но вы также можете позвонить
Эти ссылки тоже хороши, потому что в них перечислены все подсказки. Так что просто P/Invoke этих плохих парней и вызовите их прямо из вашего приложения, пакетный файл не нужен :)
Встроенная утилита Windows PowerCfg
может менять яркость на лету...
Обычно PowerCfg
вызывается из строки cmd или в пакетных файлах, но вы также можете вызвать его из своего приложения, используя Process.Start
.
При использовании PowerCfg вам необходимо знать несколько вещей:
- Руководство схемы: это руководство, связанное со схемой электропитания, которую вы хотите изменить.
- Подруководство: это подсказка, связанная с группой параметров мощности, которую вы хотите изменить.
- Руководство по настройке: это руководство, связанное с фактическим параметром в той группе параметров питания, которую вы хотите изменить.
- Диапазон или значение индекса. Наконец, вам нужно знать, какое значение вы хотите изменить на этот параметр... Некоторые параметры имеют диапазон, в котором вы можете установить любое значение внутри этого диапазона, некоторые параметры имеют список значений для выбора, и вам нужно знать индекс значения, которое вы хотите.
Получить guid Scheme на самом деле труднее всего, так как пользователь мог определить новые схемы, и поэтому guid необходимо найти, вызвав PowerCfg -getactivescheme
Все остальные гиды являются константами, и их можно найти, запустив PowerCfg - query
После того, как вы выстроите все направляющие, вы можете установить значение переменного тока (питание подключено) и постоянного тока (питание от батареи) для каждой настройки. с участием:
POWERCFG -SETACVALUEINDEX <SCHEME_GUID> <SUB_GUID> <SETTING_GUID> <SettingIndex>
and
POWERCFG -SETDCVALUEINDEX <SCHEME_GUID> <SUB_GUID> <SETTING_GUID> <SettingIndex>
В качестве примера... вот небольшой пакетный файл, который я использую для отключения функции адаптивной яркости:
Echo Disable Adaptive Display Brightness Setting
for /f "tokens=2 delims=:" %%G in ('powercfg -getactivescheme') do set guid=%%G
for /f %%G in ("%guid%") do set guid=%%G
powercfg -setacvalueindex %guid% 7516b95f-f776-4464-8c53-06167f40cc99 fbd9aa66-9553-4097-ba44-ed6e9d65eab8 000
powercfg -setdcvalueindex %guid% 7516b95f-f776-4464-8c53-06167f40cc99 fbd9aa66-9553-4097-ba44-ed6e9d65eab8 000
Первые две строки получают руководство по схеме, затем следующие две устанавливают фактические значения.
Вы можете сделать что-то очень похожее для настроек яркости дисплея... Это подгруппа и руководство по настройке (та же подгруппа, что и адаптивная яркость):
Subgroup GUID: 7516b95f-f776-4464-8c53-06167f40cc99 (Display)
Power Setting GUID: aded5e82-b909-4619-9949-f5d71dac0bcb (Display brightness)
Minimum Possible Setting: 0x00000000
Maximum Possible Setting: 0x00000064
Possible Settings increment: 0x00000001
Possible Settings units: %
Чтобы вызвать его из своего приложения C#, вы можете создать файл cmd на лету и запустить его с помощью Process.Start
Надеюсь, это поможет!
setbrightness 12
или что-то еще . Мой ноутбук устанавливает только с шагом 10 с помощью горячих клавиш яркости, но в сумерках уровень 10 слишком тусклый, а уровень 20 слишком яркий, поэтому я часто использую скрипт, чтобы установить допустимый уровень между этими двумя значениями.
- person Jay; 09.12.2017