<...zurück>

Batteriestatus per Code erfragen

Auch für die Abfrage der Batteriestatusinformationen existiert keine VB-Funktion. Die in der API vorhandene GetSystemPowerStstusEx wird diese Aufgabe für uns erledigen, benötigt aber einen UDT als Zielvariablenbereich. Da UDT's in VBCE nicht möglich sind, muss die Funktion mittels "String" betrogen werden:

Deklarationsteil:

Declare Function GetSystemPowerStatusEx Lib "coredll.dll" (ByVal pstatus As String, update As Boolean) As Boolean

..und hier die Beispielfunktion die die Batterie-Prozentangabe des Akku's zurückgibt:

Public Function getBattStatus()
    battStatus = Space(50)
    battFlag = GetSystemPowerStatusEx(battStatus, True)
    If battFlag = True Then
        getBattStatus = AscB(MidB(battStatus, 3, 1))
    else
        getBattStstus=-1
    End If
End Function

 Der API-Aufruf verlangt einen Pointer auf eine Struktur, in die die zu ermittelnden Daten eingetragen werden. Da UDT's in VBCE nicht verfügbar sind, muß ein String für diese Aufgabe herhalten. Er wird als Initialisierung mit 50 Leerzeichen (&H20) gefüllt. Der GetSystemPowerStstusEx-Funktion muß als zweites Argument das Update-Flag übergeben werden, hat es den Status "Falsch", so gibt die Funktion den letzten Wert zurück, der vom System ermittelt wurde, dieser kann einige Sekunden alt sein. Ist die Flagge "Wahr", so wird versucht, den aktuellen Stand zu ermitteln. Die Funktion gibt den Wert "Wahr" zurück, wenn sie erfolgreich war, sonst "Falsch".

die im "Hilfsarray" zurückgegebenen Daten sehen folgendermaßen aus:

1 BYTE ACLineStatus; Spannungsstatus, zeigt an, ob Gerät per Netzteil oder Batterie betrieben wird.
0 Offline (Batteriebetrieb)
1 Online
255 unbekannt
1 BYTE BatteryFlag; Batterie-Ladestatus
1 hoch
2 niedrig
4 kritisch
8 im Ladezustand
128 keine System-Batterie
255 unbekannt
1 BYTE BatteryLifePercent aktueller Füllgrad des Akku's in Prozent, Wert zwischen 1 und 100 zeigt die Prozentzahl, der Wert 255 zeigt den Status "unbekannt" an.
1 BYTE Reserved1 reserviert, immer 0.
4 BYTE BatteryLifeTime zeigt die verbleibende Akku-Entladezykluszeit in Sekunden an, der Wert &HFFFFFFFF zeigt den Ststus "unbekannt" an.
4 BYTE BatteryFullLifeTime zeigt die gesamte Akku-Entladezykluszeit in Sekunden an, der Wert &HFFFFFFFF zeigt den Ststus "unbekannt" an.
1 BYTE Reserved2 reserviert, immer 0.
1 BYTE BackupBatteryFlag Batterie-Status der Sicherungsbatterie, Flaginhalte siehe BatteryFlag
1 BYTE BackupBatteryLifePercent aktueller Verbrauchszustand der Sicherungsbatterie in Prozent, Wert zwischen 1 und 100 zeigt die Prozentzahl, der Wert 255 zeigt den Status "unbekannt" an.
1 BYTE Reserved3 reserviert, immer 0.
4 BYTE BackupBatteryLifeTime zeigt die verbleibende Sicherungsbatterie-Entladezykluszeit in Sekunden an, der Wert &HFFFFFFFF zeigt den Ststus "unbekannt" an.
4 BYTE BackupBatteryFullLifeTime zeigt die gesamte Sicherungsbatterie-Entladezykluszeit in Sekunden an, der Wert &HFFFFFFFF zeigt den Ststus "unbekannt" an.

 

 

<...zurück>