Declare Function GetSystemPowerStatus Lib "kernel32" ( _ lpSystemPowerStatus As SYSTEM_POWER_STATUS) As Long
GetSystemPowerStatus получает информацию о состоянии питания компьютера, что особенно полезно при использовании ноутбуков для получения данных об источнике питания и заряде батарей.
В успешном случае возвращается ненулевое значение, или 0 в случае ошибки.
' Добавим на форму несколько меток Label
Dim power_status As SYSTEM_POWER_STATUS
Dim txt As String
If GetSystemPowerStatus(power_status) = 0 Then
lblACStatus.Caption = "Ошибка"
Else
Select Case power_status.ACLineStatus
Case 0
lblACStatus.Caption = "Питание от батарей"
Case 1
lblACStatus.Caption = "Питание от сети"
Case 255
lblACStatus.Caption = "Неизвестный тип питания"
End Select
If power_status.BatteryFlag And 1 Then txt = txt & ", High (> 66%)"
If power_status.BatteryFlag And 2 Then txt = txt & ", Low (< 33%)"
If power_status.BatteryFlag And 4 Then txt = txt & ", Critical (< 5%)"
If power_status.BatteryFlag And 8 Then txt = txt & ", Charging"
If power_status.BatteryFlag And 128 Then txt = txt & ", No system battery"
If power_status.BatteryFlag = 255 Then txt = txt & ", Unknown"
If Len(txt) > 0 Then txt = Mid$(txt, 3)
lblBatteryStatus.Caption = txt
If power_status.BatteryFullLifeTime = -1 Then
lblFullLifetime.Caption = "Неизвестно"
Else
lblFullLifetime.Caption = power_status.BatteryFullLifeTime & " seconds"
End If
If power_status.BatteryLifeTime = -1 Then
lblRemainingLifetime.Caption = "Неизвестно"
Else
lblRemainingLifetime.Caption = power_status.BatteryLifeTime & " seconds"
End If
If power_status.BatteryLifePercent = 255 Then
lblPercentLifetime.Caption = "Неизвестно"
Else
lblPercentLifetime.Caption = power_status.BatteryLifePercent & "%"
End If
End If