How do I get battery information in windows?

You could use WMI and the Win32_Battery class. It has a property called Chemistry that has this information.

UPDATE:

Actually, there is also Win32_PortableBattery, which would be more appropriate for a laptop battery. They both inherit from the CIM_Battery class.


The IOCTL_BATTERY_QUERY_INFORMATION info from DeviceIOControl can tell you the following info:

Information level

  • BatteryDeviceName
  • BatteryEstimatedTime
  • BatteryGranularityInformation
  • BatteryInformation
  • BatteryManufactureDate
  • BatteryManufactureName
  • BatterySerialNumber
  • BatteryTemperature
  • BatteryUniqueID

The BatteryInformation structure contains the Chemistry field which describes this info you require.

  • PbAc : Lead Acid
  • LION : Lithium Ion
  • Li-I : Lithium Ion
  • NiCd : Nickel Cadmium
  • NiMH : Nickel Metal Hydride
  • NiZn : Nickel Zinc
  • RAM : Rechargeable Alkaline-Manganese

There is an example here: http://msdn.microsoft.com/en-us/library/bb204769(v=VS.85).aspx


If you're using managed code (C# or VB) the Windows API Code Pack has a wrapper class that raises .NET events when power events (going on or off AC, reaching critical battery level etc) happen and exposes properties like estimated battery life remaining. It also includes a whole pile of gory details - the sample shows them.