Агресивна економія енергії при роботі від батареї на Windows


Як володар старого ноутбука з напівживий батареєю я сильно стурбований продовженням часу його використання без харчування. Знаючи про те, що в Windows є потужний інструмент для збереження енергії, я зайнявся тим, щоб максимально зручно його використовувати. Результатами я і хочу з вами поділитися.
Керування живленням WindowsЯ не сильно обізнаний у тому, як зараз йдуть справи в плані роботи від батареї на сучасних ноутбуках. Думаю, MacBook ще мало хто може скласти конкуренцію, але так як за службовим обов'язком я користуюся Windows, то мої справи йдуть досить погано. Хоча відгуків про незадовільний часу роботи на Windows ніде особливо і не чути. Таке відчуття, що сучасні пристрої надають цілком прийнятний час роботи або у всіх сценаріях використання десь поруч знаходиться розетка.

Тим не менш, мене як студента і аж ніяк не передового ноутбука всерйоз турбує питання збереження енергії. У Windows 7 і вище є підсистема керування живленням, в якій є 3 передвстановлених схеми:
  • Висока продуктивність (знімає всі обмеження щодо економії енергії)
  • Економія енергії (агресивно пригнічує все, що може витрачати заряд, чуйність при перемиканні між додатками відчутно падає)
  • Збалансована
Остання встановлена за замовчуванням. Якщо вас не влаштовує середнє положення і ви хочете максимум продуктивності при роботі від мережі і максимум життя при роботі від батареї, то цілком логічно, що при відключенні живлення повинна встановлюватися схема Економія енергії, а при підключенні назад — Висока продуктивність, чи не так? А ось і ні. Прямого шляху для автоматичного перемикання немає. Ви можете створити свою схему живлення і всередині неї налаштувати використання ресурсів для двох сценаріїв. Але хіба хто-то хоче провести 20 хвилин в цьому віконці?

Крім того, в Windows 10 з'явилася чудова кнопка для економії енергії, але, наскільки мені відомо, її дія поширюється тільки на блокування фонових активностей UWP-додатків, що не дуже цікаво.

Рішення
Перший час я відкривав налаштування електроживлення ось таким чином при кожному відключенні шнура живлення і при підключенні його назад. Виглядає цілком безневинно до тих пір, поки це не стає рутинною активністю, яку ти робиш десятки разів в день.

Потім розум кинулась і було придумано використання bat-файлів для запуску нехитрих команд в консолі, що включають певні схеми управління живленням.

На це мене вистачило довше, але усвідомлення дикості того, чим я займаюся поступово прийшло і в одну безсонну ніч було написано найпростіше WinForms програма на C#, яке слухає системний event і при зміні режиму харчування активує певну схему живлення.

У реалізації вдалося уникнути навіть таймерів, значить додаток практично не повинно впливати на продуктивність системи, будучи постійно запущеним.
Ми вішаємо обробник на системне подія:
SystemEvents.PowerModeChanged += OnPowerModeChanged;

І пишемо сам обробник:
private void OnPowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
if (e.Mode == PowerModes.StatusChange)
{
switch (SystemInformation.PowerStatus.PowerLineStatus)
{
case PowerLineStatus.Online:
DisablePowerSaving();
break;
case PowerLineStatus.Offline:
EnablePowerSaving();
break;
}
}
}

Все банально і просто. Перемикання режимів відбувається по запуску утиліти
powercfg
в командному рядку з передачею GUID потрібної нам схеми живлення:
private void EnablePowerSaving()
{
RunCmdCommand("powercfg /setactive a1841308-3541-4fab-bc81-f71556f20b4a");
}

Весь код запускається з прихованої форми повідомлення про зміну режиму локалізовані російською та англійською мовами. Програма ставиться в автозавантаження копіюванням в папці Startup, в репозиторії для цього навіть є спеціальний bat'нік.
→ до Речі, ось і репозиторій.
Додаток перевірено на Windows 10, повинно коректно працювати на Windows 7 і вище. На Windows XP і Vista виникнуть проблеми з шляхами до папці Startup. Сподіваюся на вашу зворотний зв'язок, якщо буде попит, то підтримка обов'язково буде додано.
Дякую за увагу. Це був мій перший пост, буду щиро радий критиці коду та оформлення статті.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.