Calling PowerStatus.BatteryChargeStatus.ToString() sometimes returns 0

1.3k Views Asked by At

So my method is as follows:

PowerStatus powerStatus = SystemInformation.PowerStatus;

if (powerStatus.BatteryChargeStatus != BatteryChargeStatus.NoSystemBattery)
{
    var batteryStatus = powerStatus.BatteryChargeStatus.ToString()
}

From my test systems I get a wide variety of results such as:

High,

Low,

Charging,

High Charging

Low, Charging

Low, Critical

and heres the strange one... 0?

I'd imagine that it has something to do with BatteryChargeStatus Enum

1

There are 1 best solutions below

1
Hans Passant On BEST ANSWER

They missed one. From the docs of the underlying SYSTEM_POWER_STATUS operating system declaration:

The value is zero if the battery is not being charged and the battery capacity is between low and high

So just make up your own, like:

    var status = SystemInformation.PowerStatus.BatteryChargeStatus;
    if (status != BatteryChargeStatus.NoSystemBattery) {
        var batteryStatus = status == 0 ? "Not charging" : status.ToString();
        // etc...
    }