Как предотвратить изменение яркости экрана ноутбука при отключении/подключении аккумулятора

Как предотвратить изменение яркости экрана ноутбука при отключении/подключении аккумулятора

Когда я использую свой ноутбук, я постоянно регулирую яркость экрана в зависимости от условий освещения в комнате (например, сколько света попадает из окон и т. д.). Но если я отключаю ноутбук от сети или подключаю его снова, 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

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

Связанный контент