Я хочу прекратить заряжать ноутбук, когда он будет заполнен. Я попытался использовать функции PowerManagement. Используя их, я могу прочитать состояние батареи, но не могу остановить зарядку.
Является ли это возможным?
Как это можно достичь?
Мой код:
Type t = typeof(System.Windows.Forms.PowerStatus);
PropertyInfo[] pi = t.GetProperties();
PropertyInfo prop = null;
object propValue = null;
for (int i = 0; i < pi.Length; i++)
{
prop = pi[i];
propValue = prop.GetValue(SystemInformation.PowerStatus, null);
int batteryLifePercent = (int)(SystemInformation.PowerStatus.BatteryLifePercent * 100);
if (batteryLifePercent == 100)
{
// stop charging
}
}
Заранее спасибо.
Это невозможно с помощью чистого программного обеспечения. Вам нужна аппаратная поддержка, так как ваша ОС не имеет возможности изменить поведение чипа управления батареей, если не доступен специальный интерфейс.
Для отключения зарядки нет стандартного API.
Некоторые производители добавили свои собственные схемы со специальными драйверами, чтобы позволить программному управлению зарядным устройством. Например, некоторые ноутбуки Compal включили утилиту "Зеленое зарядное устройство", которая перестает заряжаться на уровне 80% при компромиссе между временем выполнения на каждый заряд и временем разгона во время работы батареи.
Но эти механизмы полностью запатентованы и специфичны для производителей.
Ваш ноутбук не контролирует программную загрузку. Как сказал elgonzo, если он будет продолжать зарядку, он перегреется и либо растопит ваш компьютер, либо взорвется.