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.
|
||||||||||||
| 1 BYTE BatteryFlag; | Batterie-Ladestatus
|
||||||||||||
| 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. |