Obtient le statut d'alimentation du système
#include <WinAPISys.au3>
_WinAPI_GetSystemPowerStatus ( )
Succès: | Retourne le tableau contenant les informations suivantes: [0] - Le statut de l'alimentation secteur. Ce résultat peut être l'une des valeurs suivantes: 0 - Hors ligne 1 - En ligne 255 - Statut inconnu [1] - L'état de charge de la batterie. Ce résultat peut être une combinaison des valeurs suivantes: 0 - La batterie n'est pas chargée et sa capacité est comprise entre basse et haute 1 - Haut - la capacité de la batterie est à plus de 66% 2 - Faible - la capacité de la batterie est à moins de 33% 4 - Critique - la capacité de la batterie est à moins de 5% 8 - En cours de chargement 128 - Pas de batterie de système 255 - Statut inconnu - impossible de lire les informations de flag de la batterie [2] - Le pourcentage de la charge de batterie restante par rapport à une pleine charge. Ce résultat peut être une valeur dans la plage de 0 à 100, ou 255 si le statut est inconnu. [3] - Le nombre de secondes restantes de charge de la batterie, ou (-1) si les secondes restantes ne sont pas connus. [4] - Le nombre de secondes restantes de charge de la batterie quand elle est en pleine charge, ou (-1) si la durée de vie totale de la batterie chargée est inconnue. |
Échec: | Définit @error <> 0, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur. |
Consultez GetSystemPowerStatus dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <WinAPISys.au3> #include <WindowsConstants.au3> Local $hForm = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()'), 180, 135, -1, -1, -1, $WS_EX_TOPMOST) Local $idButton = GUICtrlCreateButton('OK', 55, 101, 70, 23) GUICtrlCreateLabel('AC power:', 10, 14, 90, 14) GUICtrlCreateLabel('Status:', 10, 34, 70, 14) GUICtrlCreateLabel('Charge:', 10, 54, 90, 14) GUICtrlCreateLabel('Time remaining:', 10, 74, 90, 14) Global $g_aidLabel[4] For $i = 0 To 3 $g_aidLabel[$i] = GUICtrlCreateLabel('Unknown', 110, 14 + 20 * $i, 60, 14) Next GUISetState(@SW_SHOW) AdlibRegister('_BatteryStatus', 1000) Global $iMsg Do $iMsg = GUIGetMsg() Until $iMsg = $GUI_EVENT_CLOSE Or $iMsg = $idButton Func _BatteryStatus() Local $aData = _WinAPI_GetSystemPowerStatus() If @error Then Return If BitAND($aData[1], 128) Then $aData[0] = 'Not present' For $i = 1 To 3 $aData[$i] = 'Unknown' Next Else Switch $aData[0] Case 0 $aData[0] = 'Offline' Case 1 $aData[0] = 'Online' Case Else $aData[0] = 'Unknown' EndSwitch Switch $aData[2] Case 0 To 100 $aData[2] &= '%' Case Else $aData[2] = 'Unknown' EndSwitch Switch $aData[3] Case -1 $aData[3] = 'Unknown' Case Else Local $H, $M $H = ($aData[3] - Mod($aData[3], 3600)) / 3600 $M = ($aData[3] - Mod($aData[3], 60)) / 60 - $H * 60 $aData[3] = StringFormat($H & ':%02d', $M) EndSwitch If BitAND($aData[1], 8) Then $aData[1] = 'Charging' Else Switch BitAND($aData[1], 0xF) Case 1 $aData[1] = 'High' Case 2 $aData[1] = 'Low' Case 4 $aData[1] = 'Critical' Case Else $aData[1] = 'Unknown' EndSwitch EndIf EndIf For $i = 0 To 3 GUICtrlSetData($g_aidLabel[$i], $aData[$i]) Next EndFunc ;==>_BatteryStatus