No tienen un ordenador portátil para probar con, pero supongo que podría utilizar la clase WMI Win32_Battery.
Tiene dos campos que parecen interesantes - DesignCapacity
, para informarle
Capacidad de diseño de la batería en milivatios-hora.
y FullChargeCapacity
, que tiene la nota fascinante que
capacidad de carga total de la batería en milivatios-hora. La comparación del valor con la propiedad DesignCapacity determina cuándo debe reemplazarse la batería.
así que yo creo que se puede utilizar WMI para leer estos dos valores, y luego calcular FullChargeCapacity/DesignCapacity
para encontrar el número de porcentaje estado de la batería.
EDITAR
He aquí un breve ejemplo de acceso a la información WMI usando C#. Primero agregué una referencia al ensamblaje System.Management
. Entonces:
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);
}
}
}
}
}
También, nota que está básicamente ejecutando una consulta de tipo SQL contra WMI, por lo que puede variar de que si lo desea. Windows Management Instrumentation Query Language
, o WQL
, es lo que desea buscar para obtener más información al respecto.
También vea la respuesta de ahawker, puede terminar siendo más útil si WMI no captura correctamente los datos de la batería, como señala.
"Antes de votar para cerrar esto, eche un vistazo a la pregunta". Es de suponer que nadie votaría para cerrar su pregunta sin leerla primero. – ean5533
@ ean5533: A veces me ha sucedido eso a veces. – Mehrdad