У меня нет ноутбука для тестирования, но я полагаю, вы могли бы использовать класс WMI Win32_Battery .
У него есть два поля, которые выглядят интересно - DesignCapacity
,который говорит вам
Расчетная емкость батареи в милливатт-часах.
и FullChargeCapacity
, которая имеет захватывающее примечание, что
Полная зарядная емкость аккумулятора в милливатт-часах.Сравнение значения со свойством DesignCapacity определяет, когда батарея требует замены.
Таким образом, я предполагаю, что вы можете использовать WMI, чтобы прочитать эти два значения, а затем вычислить FullChargeCapacity/DesignCapacity
, чтобы найти процентное значение состояния батареи.
РЕДАКТИРОВАТЬ
Вот краткий пример доступа к информации WMI с использованием C #.Сначала я добавил ссылку на сборку System.Management
.Затем:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Management.ObjectQuery query = new ObjectQuery("Select * FROM Win32_Battery");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection collection = searcher.Get();
foreach (ManagementObject mo in collection)
{
foreach (PropertyData property in mo.Properties)
{
Console.WriteLine("Property {0}: Value is {1}", property.Name, property.Value);
}
}
}
}
}
Также обратите внимание, что вы в основном выполняете SQL-подобный запрос к WMI, так что вы можете изменить его, если хотите.Windows Management Instrumentation Query Language
, или WQL
, это то, что вы хотите найти, чтобы узнать больше об этом.
Также взгляните на ответ ahawker, это может оказаться более полезным, если WMI не захватывает должным образомданные батареи, как он отмечает.