os dejo un pequeño y simple ejemplo para controlar la batería del propio portátil con las funciones externas del API de SDL2:
Library "libSDL2-2.0:0.2.0"
Private Enum SDL_POWERSTATE_UNKNOWN = 0,
SDL_POWERSTATE_ON_BATTERY,
SDL_POWERSTATE_NO_BATTERY,
SDL_POWERSTATE_CHARGING,
SDL_POWERSTATE_CHARGED
' int SDL_Init(Uint32 flags)
' Initializes the SDL library.
Private Extern SDL_Init(flags As Integer) As Integer
' SDL_PowerState SDL_GetPowerInfo(int* secs, int* pct)
' Gets the current power supply details.
Private Extern SDL_GetPowerInfo(secs As Pointer, pct As Pointer) As Integer
' void SDL_Quit(void)
' Clean up all initialized subsystems.
Private Extern SDL_Quit()
Public Sub Main()
Dim segundos, percent, status As Integer
Dim s As String
SDL_Init(0)
status = SDL_GetPowerInfo(VarPtr(segundos), VarPtr(percent))
Select Case status
Case SDL_POWERSTATE_UNKNOWN
s = "desconocido"
Case SDL_POWERSTATE_ON_BATTERY
s = "batería presente"
Case SDL_POWERSTATE_NO_BATTERY
s = "batería inexistente"
Case SDL_POWERSTATE_CHARGING
s = "cargando"
Case SDL_POWERSTATE_CHARGED
s = "cargada"
Case Else
Error.Raise("Error !")
End Select
Print "Status de la batería: "; s
If percent = -1 Then
s = "desconocida"
Else
s = CStr(percent) & "%"
Endif
Print "Porcentaje restante: "; s
If segundos = -1 Then
s = "desconocido"
Else
s = CStr(Date(0, 0, 0, 0, 0, 0, segundos * 1000))
Endif
Print "Tiempo restante: "; s
SDL_Quit()
End
Private Enum SDL_POWERSTATE_UNKNOWN = 0,
SDL_POWERSTATE_ON_BATTERY,
SDL_POWERSTATE_NO_BATTERY,
SDL_POWERSTATE_CHARGING,
SDL_POWERSTATE_CHARGED
' int SDL_Init(Uint32 flags)
' Initializes the SDL library.
Private Extern SDL_Init(flags As Integer) As Integer
' SDL_PowerState SDL_GetPowerInfo(int* secs, int* pct)
' Gets the current power supply details.
Private Extern SDL_GetPowerInfo(secs As Pointer, pct As Pointer) As Integer
' void SDL_Quit(void)
' Clean up all initialized subsystems.
Private Extern SDL_Quit()
Public Sub Main()
Dim segundos, percent, status As Integer
Dim s As String
SDL_Init(0)
status = SDL_GetPowerInfo(VarPtr(segundos), VarPtr(percent))
Select Case status
Case SDL_POWERSTATE_UNKNOWN
s = "desconocido"
Case SDL_POWERSTATE_ON_BATTERY
s = "batería presente"
Case SDL_POWERSTATE_NO_BATTERY
s = "batería inexistente"
Case SDL_POWERSTATE_CHARGING
s = "cargando"
Case SDL_POWERSTATE_CHARGED
s = "cargada"
Case Else
Error.Raise("Error !")
End Select
Print "Status de la batería: "; s
If percent = -1 Then
s = "desconocida"
Else
s = CStr(percent) & "%"
Endif
Print "Porcentaje restante: "; s
If segundos = -1 Then
s = "desconocido"
Else
s = CStr(Date(0, 0, 0, 0, 0, 0, segundos * 1000))
Endif
Print "Tiempo restante: "; s
SDL_Quit()
End