I have two laptops here. One is running Vista, the other Windows 7. I need to get the specifications on the batteries in both, how do I go about that?
The reason I'm asking is that I'd like to know if they're lithium ion or something else. Supposedly other types of batteries may have adversely affected charge capacities if left plugged in for too long.
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.
Here is a interesting link: http://www.nextofwindows.com/find-out-how-healthy-your-battery-is-on-your-windows-7-laptop/ command described there
powercfg -energy
will produce you nice report with many details about battery.
Hopeit helps :)
来源:https://stackoverflow.com/questions/3154554/how-do-i-get-battery-information-in-windows