
Когда я использую свой ноутбук, я постоянно регулирую яркость экрана в зависимости от условий освещения в комнате (например, сколько света попадает из окон и т. д.). Но если я отключаю ноутбук от сети или подключаю его снова, Windows смотрит на настройки яркости по умолчанию в профиле питания для «от батареи» или «от сети» и соответствующим образом изменяет яркость. Это раздражает, и мне приходится снова искать идеальную яркость для моей текущей ситуации, вместо того чтобы продолжать работу.
Я хотел бы сделать так, чтобы подключение или отключение батареи не было триггером, который регулирует яркость экрана вообще. Яркость экрана должна меняться только тогда, когда я сам ее регулирую. Кто-нибудь знает, как это можно сделать?
Редактировать: Я столкнулся с этой проблемой как в Windows Vista, так и в Windows 7.
решение1
Итак, после нескольких часов мозговых упражнений я создал этот скрипт PowerShell. Вот он.
while($true)
{
$a = Get-WmiObject -ns root/wmi -class wmiMonitorBrightNess
$a1 = $a.Currentbrightness
$b = Get-WmiObject -ns root/wmi -class batterystatus
$b1 = $b.poweronline
start-sleep 1
$b = Get-WmiObject -ns root/wmi -class batterystatus
$b2 = $b.poweronline
If ($b2 -ne $b1)
{
$c = Get-WmiObject -ns root/wmi -class wmiMonitorBrightNessMethods
$c.WmiSetBrightNess(0,$a1)
}
}
Скопируйте в блокнот и сохраните с расширением «.ps1».
Что он делает, так это часто проверяет состояние питания, подключено или нет. Если состояние питания изменилось, он восстановит предыдущее значение яркости.
Я проверил это на своем ноутбуке с Win8.1, работает отлично.
Вы можете настроить время отклика, изменив
start-sleep
значение (в настоящее время оно составляет 1 секунду).Для запуска этого скрипта необходимо изменить политику выполнения Powershell со значения по умолчанию.
Этот скрипт — лишь теоретический пример, на практике окна PowerShell останутся открытыми, что может быть проблематично для некоторых. Я не обсуждаю способы скрытия окна.
решение2
Меня свела с ума та же проблема, что и у Nomad, и решение DrNT007 сработало отлично.
Я немного поискал в сети, как скрыть окно PowerShell, и пришел к выводуэта темаи нашелрешение пользователя 2656928Лучший вариант для меня: просто добавьте следующий код в начало скрипта DrNT007, и окно PowerShell на мгновение появится, а затем исчезнет:
$t = '[DllImport("user32.dll")] public static extern bool ShowWindow(int handle, int state);'
add-type -name win -member $t -namespace native
[native.win]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0)
Затем я хотел поместить скрипт в папку автозагрузки Windows, но он выдал мне ошибку. Я определенно нуб и решил эту проблему просто методом проб и ошибок: я обнаружил, что имя скрипта (и его путь, я полагаю) НЕ ДОЛЖНЫ содержать пробелы, но, все равно, я не могу понять, почему он выдает ошибку, если его напрямую поместить в окно автозагрузки... В любом случае, я поместил его в папку Windows и создал ярлык в папке автозагрузки. Этот способ в Windows 8.1 работает как часы.
решение3
Windows 7,
посмотрите в Панель управления\Оборудование и звук\Параметры электропитания\Изменить параметры плана\
От батареи или от сети
решение4
Ниже яркости затемненного дисплея следует включить адаптивную яркость. Отключите ее, и яркость останется прежней, независимо от того, светло или темно.