GetSystemPowerStatus
-
Hi,
ich schreibe gerade ein Programm, das den Akku-Status anzeigt. Ich verwende GetSystemPowerStatus(). Wenn ich das Programm ausführe, auf einem Laptop selbstverständlich mit eingestecktem Ladekabel, hat BatteryFlag den Wert 9, der eigentlich nicht in der Liste der mögliche Werte aufgeführt ist. Da ich anhand dieses Wertes entscheiden will ob "Laden... x%" oder nur "x%" ausgegeben wird, wär das schon wichtig zu wissen. Kurz gesagt, suche ich eine genaue Zuordnung von den einzelnen Werten (1 - 255).
Siehe: http://msdn2.microsoft.com/en-us/library/aa372693.aspx
MfG WilMen :xmas1:
-
Naja eigentlich ist er aufgelistet
. Da steht ja:MSDN schrieb:
This member can contain one or more of the following flags.
Das heißt, dass mehrere Werte 'in einem' enthalten sind (- das nennt man "Bitcodierung von Daten"). Wenn Du Dir die einzelnen definierten Werte anguckst, sieht man da eine gewisse Regelmäßigkeit (1, 2, 4, 8, ...), welche auf Bitflags schließen lässt.
Du musst also mit den Bitoperatoren prüfen, ob Dein gesuchter Wert enthalten ist, also so:
SYSTEM_POWER_STATUS spsInfo = { 0 }; GetSystemPowerStatus(&spsInfo); if(spsInfo.BatteryFlag & 8) // Charging... if(spsInfo.BatteryFlag & 1) // Battery-Power-Level: High, > 66% // und so weiter ...In Deinem Fall (also beim Wert 9) ist 8 (
'Charging') und 1 (
'High—the battery capacity is at more than 66 percent') gesetzt
.
-
Hi CodeFinder,
danke für die schnelle Antwort inklusive Erklärung!
MfG WilMen :xmas1: