vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: System/Windows · Sonstiges   |   VB-Versionen: VB4, VB5, VB630.03.05
Batteriestatus abfragen

Dieser Tipp zeigt, wie sich der Batteriestatus eines Notebooks abfragen lässt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  21.000 
www.tools4vb.deSystem:  Win9x, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Notebooks werden immer beliebter
Heute möchten wir Ihnen zeigen, wie sich der aktuelle Batteriestatus des Notebooks via VB und Einsatz der GetSystemPowerStatus API-Funktion abfragen lässt.

Folgende Daten können über die API-Funktion ermittelt werden:

  • Ladezustand des Akkus
  • ungefähre Restlaufzeit des Akkus
  • Prüfen, ob externes Netzteil angeschlossen

Erstellen Sie ein neues Projekt und fügen nachfolgende Deklarationen in den Allgemein-Teil der Form ein:

Option Explicit
 
' Benötigte API-Deklarationen
Private Declare Function GetSystemPowerStatus Lib "kernel32" _
  Alias "GetSystemPowerStatus" ( _
  lpSystemPowerStatus As SYSTEM_POWER_STATUS) As Long
 
Private Type SYSTEM_POWER_STATUS
  ACLineStatus As Byte
  BatteryFlag As Byte
  BatteryLifePercent As Byte
  Reserved1 As Byte
  BatteryLifeTime As Long
  BatteryFullLifeTime As Long
End Type
 
Private Enum PowerStatus
  ACPower = 0         ' externes Netzteil vorhanden?
  BatteryFlag = 1     ' Batteriezustand
  BatteryPercent = 2  ' Restlaufzeit in Prozent
  BatteryTime = 3     ' Restlaufzeit in Sekunden
  BatteryFullTime = 4 ' Akku-Gesamtlaufzeit
End Enum
' Akku-Status abfragen
Private Function GetPowerState(eState As PowerStatus) As String
  Dim oState As SYSTEM_POWER_STATUS
 
  If GetSystemPowerStatus(oState) <> 0 Then
    With oState
      Select Case eState
        Case ACPower
          ' ext. Netzteil vorhanden?
          If .ACLineStatus = 0 Then
            GetPowerState = "kein Netzteil"
          ElseIf .ACLineStatus = 1 Then
            GetPowerState = "Netzteil vorhanden"
          Else
            GetPowerState = "unbekannt"
          End If
 
        Case BatteryFlag
          ' Batteriezustand
          Select Case .BatteryFlag
            Case 1
              GetPowerState = "Voll"
            Case 2
              GetPowerState = "Niedrig"
            Case 4
              GetPowerState = "Kritisch"
            Case 8
              GetPowerState = "Lädt"
            Case 128
              GetPowerState = "Keine Batterien"
            Case Else
              GetPowerState = "unbekannt"
          End Select
 
        Case BatteryPercent
          ' Restlaufzeit in Prozent
          If .BatteryLifePercent = 255 Then
            GetPowerState = "unbekannt"
          Else
            GetPowerState = CStr(.BatteryLifePercent) & " %"
          End If
 
        Case BatteryTime
          ' Restlaufzeit in Stunden
          If .BatteryLifeTime = -1 Then
            GetPowerState = "unbekannt"
          Else
            GetPowerState = FormatTime(.BatteryLifeTime) & " Std."
          End If
 
        Case BatteryFullTime
          ' Akku-Gesamtlaufzeit
          If .BatteryFullLifeTime = -1 Then
            If .BatteryLifePercent > 0 And .BatteryLifeTime > 0 Then
              GetPowerState = FormatTime(.BatteryLifeTime / .BatteryLifePercent * 100) & " Std."
            Else
              GetPowerState = "unbekannt"
            End If
          Else
            GetPowerState = FormatTime(.BatteryFullLifeTime) & " Std."
          End If
 
      End Select
    End With
  End If
End Function
' Zeit formatieren
Private Function FormatTime(ByVal nSek As Long) As String
  Dim nStd As Long
  Dim nMin As Long
 
  nStd = Int(nSek / 3600)
  nSek = nSek - (nStd * 3600)
  nMin = Int(nSek / 60)
 
  FormatTime = CStr(nStd) & ":" & Format$(nMin, "00")
End Function

Platzieren Sie jetzt auf die Form 5 Label-Controls (Label1 bis Label5), sowie einen CommandButton (Command1). Beim Klick auf den CommandButton soll der aktuelle Batterie-Status in den jeweiligen Label-Controls angezeigt werden.

Private Sub Command1_Click()
  Label1.Caption = "Netzteil: " & GetPowerState(ACPower)
  Label2.Caption = "Batteriezustand: " & GetPowerState(BatteryFlag)
  Label3.Caption = "Restzeit in Prozent: " & GetPowerState(BatteryPercent)
  Label4.Caption = "Restzeit in Std: " & GetPowerState(BatteryTime)
  Label5.Caption = "Akkut-Gesamtlaufzeit: " & GetPowerState(BatteryFullTime)
End Sub

Dieser Tipp wurde bereits 21.000 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel