Código: Seleccionar todo
Option Explicit
'---------------------------------------------------------------------------------------
' Función : SystemPowerStatus
' Fecha : 09/10/2010 2:34 AM
' Autor : Skyweb07
' Email : [email protected]
' Web : http://www.skyweb-productions.org
' Própsito : Recupera información sobre el estado de la alimentación del sistema.
' El estado indica si el sistema está funcionando con corriente alterna
' o corriente continua, si la batería está cargando, y la cantidad de vida
' de la batería queda.
'
'---------------------------------------------------------------------------------------
Public Type SYSTEM_POWER_STATUS
ACLineStatus As Byte
BatteryFlag As Byte
BatteryLifePercent As Byte
Reserved1 As Byte
BatteryLifeTime As Long
BatteryFullLifeTime As Long
End Type
Public Declare Function GetSystemPowerStatus Lib "kernel32" (lpSystemPowerStatus As SYSTEM_POWER_STATUS) As Long
Public Function SystemPowerStatus() As String
Dim SI As SYSTEM_POWER_STATUS
If GetSystemPowerStatus(SI) Then
SystemPowerStatus = "Estado de conexión del cable : "
Select Case SI.ACLineStatus
Case 0: SystemPowerStatus = SystemPowerStatus & "Desconectado." & vbCrLf
Case 1: SystemPowerStatus = SystemPowerStatus & "Conectado." & vbCrLf
Case 255: SystemPowerStatus = SystemPowerStatus & "Desconocido." & vbCrLf
End Select
SystemPowerStatus = SystemPowerStatus & "Estado de la bateria : "
Select Case SI.BatteryFlag
Case 1: SystemPowerStatus = SystemPowerStatus & "Capacidad Alta +60%" & vbCrLf
Case 2: SystemPowerStatus = SystemPowerStatus & "Capacidad Baja -33%" & vbCrLf
Case 3: SystemPowerStatus = SystemPowerStatus & "Capacidad Crítica -5%" & vbCrLf
Case 8: SystemPowerStatus = SystemPowerStatus & "Cargandose..." & vbCrLf
Case 128: SystemPowerStatus = SystemPowerStatus & "No presente." & vbCrLf
Case 255: SystemPowerStatus = SystemPowerStatus & "Desconocido." & vbCrLf
End Select
If SI.BatteryLifePercent <> 255 Then
SystemPowerStatus = SystemPowerStatus & "Porciento de carga de la batería : " & SI.BatteryLifePercent & "%" & vbCrLf
End If
If SI.BatteryLifeTime <> -1 Then
Dim hData As String
If SI.BatteryLifeTime > 60 Then
hData = Format$(SI.BatteryLifeTime / 60, "##,##") & " Minutos."
Else
hData = Format$(SI.BatteryLifeTime, "##") & " Segundos."
End If
SystemPowerStatus = SystemPowerStatus & "Minutos restantes de la batería : " & hData
End If
End If
End Function