Programmierung > Delphi > Batterie > GetSystemPowerStatus

Die Systemfunktion GetSystemPowerStatus

  • Beschreibung
  • Funktion GetSystemPowerStatus
  • Struktur SYSTEM_POWER_STATUS
  • Funktion in Delphi 7
  • Download
  • Links
  • Beschreibung

    Dies ist eine Systemfunktion, setzt mindestens ein Windows XP als Desktop-Version voraus und liefert Informationen zur Stromversorgung sowie zum Ladezustand der Batterie.

    Funktion GetSystemPowerStatus

    Die Funktion ist im MSDN Windows Dev Center so definert:

    BOOL WINAPI GetSystemPowerStatus(
      _Out_ LPSYSTEM_POWER_STATUS lpSystemPowerStatus
    );
    

    lpSystemPowerStatus: Ein Zeiger auf den Speicher mit einer Datenstuktur SYSTEM_POWER_STATUS, welche die Informationen enthält.

    Wurde die Operation fehlerfrei durchgeführt ist der Rückgabewert True. Wurde sie nicht fehlerfrei ausgeführt, kann der Fehler mit der Funktion GetLastError ermittelt werden.

    Die Funktion ist in Delphi in der Unit Windows deklariert. Hier Delphi 7:

    function GetSystemPowerStatus(var lpSystemPowerStatus: TSystemPowerStatus): BOOL; stdcall;
    

    Struktur SYSTEM_POWER_STATUS

    Die Struktur enthält die Informationen und ist als c++ im MSDN Windows Dev Center definiert:

    typedef struct _SYSTEM_POWER_STATUS {
      BYTE  ACLineStatus;
      BYTE  BatteryFlag;
      BYTE  BatteryLifePercent;
      BYTE  SystemStatusFlag;
      DWORD BatteryLifeTime;
      DWORD BatteryFullLifeTime;
    } SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
    

    ACLineStatus: Gibt an, ob das Gerät am Wechselstromnetz angeschlossen ist.

    Wert Beschreibung
    0 Offline - Nicht angeschlossen.
    1 Online - Angeschlossen.
    255 Unbekannt.

    BatteryFlag: Gibt den Ladezustand der Batterie an.

    Flag Beschreibung
    1 Hoch - Die Batteriekapazität liegt über 66%.
    2 Niedrig - Die Batteriekapazität liegt unter 33%.
    4 Kritisch - Die Batteriekapazität liegt unter 5%.
    8 Wird geladen.
    128 Keine Systembatterie.
    255 Unbekannt - Es ist nicht möglich Informationen zu lesen.

    Der Wert ist 0, wenn die Batterie nicht geladen wird und die Kapazität zwischen hoch und niedrig liegt

    BatteryLifePercent: Gibt in einem Bereich von 0 bis 100% den Ladezustand der Batterie an. Der Wert 255 gibt an, dass der Ladezustand unbekannt ist.

    SystemStatusFlag: Gibt den Status des Batteriesparmodus an.

    Wert Beschreibung
    0 Der Batteriesparmodus ist aus.
    1 Der Batteriesparmodus ist an. Das Energiseparen ist möglich.

    BatteryLifeTime: Die verbleibende Batterielaufzeit in Sekunden. Ist die verbleibende Laufzeit unbekannt oder das Gerät am Netz angeschlossen ist der Wert -1.

    BatteryFullLifeTime: Die Batterielaufzeit in Sekunden bei voller Ladung. Ist die Laufzeit unbekannt oder das Gerät am Netz angeschlossen ist der Wert -1.

    Die Struktur ist in der Unit Windows.pas deklariert. Hier in Delphi 7:

    type
      PSystemPowerStatus = ^TSystemPowerStatus;
      _SYSTEM_POWER_STATUS = packed record
        ACLineStatus : Byte;
        BatteryFlag : Byte;
        BatteryLifePercent : Byte;
        Reserved1 : Byte;
        BatteryLifeTime : DWORD;
        BatteryFullLifeTime : DWORD;
      end;
      {$EXTERNALSYM _SYSTEM_POWER_STATUS}
      TSystemPowerStatus = _SYSTEM_POWER_STATUS;
      SYSTEM_POWER_STATUS = _SYSTEM_POWER_STATUS;
      {$EXTERNALSYM SYSTEM_POWER_STATUS}
    

    Funktion in Delphi 7

    uses
      ... Windows;
     
    var
      ...
      rSystemPowerStatus : TSystemPowerStatus;
     
    begin
      ...
      if GetSystemPowerStatus
      then begin
        // Auswertung
      end
      else begin
        ShowMessage(IntToStr(GetLastError));
      end;
    end;
    

    Download

    Demo mit Delphi 7 compiliert
    battery_power_exe.7z (151 kB) - MD5 (1kB)

    Source der Demo
    battery_power_src.7z (3 kB) - MD5 (1kB)