[Func] _LaptopPowerMode - Détection mode d'alimentation.
Posté : sam. 16 mai 2009 11:18
Voici une fonction très simplifié (elle mériterait d'être un peut plus complète) qui permet de savoir si un ordinateur portable est sur batterie ou secteur, ainsi que l'autonomie restante.
La fonction :
Un exemple de son utilisation :
La fonction :
Code : Tout sélectionner
===============================================================================
;
; Function Name: _LaptopPowerMode()
; Description: Retourne le mode d'alimentation en cours
; Parameter(s): $PowerType - Par référence retourne le type d'alimentation.
; 1 = Batterie
; 2 = Alim secteur
; $PowerTimeRemain - Par référence retourne la durée restante en minute.
; Chaine vide si alimentation secteur.
; Requirement(s): NA
; Return Value(s): On Success - Return 1
; On Failure - Return 0
;
;===============================================================================
Func _LaptopPowerMode(ByRef $PowerType, ByRef $PowerTimeRemain)
Local $info, $Ret = 0
$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
$objBatt = $objWMIservice.ExecQuery ("Select * from Win32_Battery")
For $object In $objBatt
$PowerType = $object.BatteryStatus
$PowerTimeRemain = $object.EstimatedRunTime
Next
If $PowerType <> 2 And $PowerType <> "" Then $PowerType = 1
If $PowerType and $PowerTimeRemain Then $Ret = 1
If $PowerTimeRemain > 1200 Then $PowerTimeRemain = ""
Return $Ret
EndFunc
; Liste des éléments WMI utilisables : (http://msdn.microsoft.com/en-us/library/aa394074(VS.85).aspx) :
; Availability : $object.Availability
; BatteryRechargeTime : $object.BatteryRechargeTime
; BatteryStatus : $object.BatteryStatus
; Caption : $object.Caption
; Chemistry : $object.Chemistry
; ConfigManagerErrorCode : $object.ConfigManagerErrorCode
; ConfigManagerUserConfig : $object.ConfigManagerUserConfig
; CreationClassName : $object.CreationClassName
; Description : $object.Description
; DesignCapacity : $object.DesignCapacity
; DesignVoltage : $object.DesignVoltage
; DeviceID : $object.DeviceID
; ErrorCleared : $object.ErrorCleared
; ErrorDescription : $object.ErrorDescription
; EstimatedChargeRemaining : $object.EstimatedChargeRemaining
; EstimatedRunTime : $object.EstimatedRunTime
; ExpectedBatteryLife : $object.ExpectedBatteryLife
; ExpectedLife : $object.ExpectedLife
; FullChargeCapacity : $object.FullChargeCapacity
; InstallDate : $object.InstallDate
; LastErrorCode : $object.LastErrorCode
; MaxRechargeTime : $object.MaxRechargeTime
; Name : $object.Name
; PNPDeviceID : $object.PNPDeviceID
; PowerManagementCapabilities[] : $object.PowerManagementCapabilities
; PowerManagementSupported : $object.PowerManagementSupported
; SmartBatteryVersion : $object.SmartBatteryVersion
; PowerManagementSupported : $object.PowerManagementSupported
; Status : $object.Status
; StatusInfo : $object.StatusInfo
; SystemCreationClassName : $object.SystemCreationClassName
; SystemName : $object.SystemName
; TimeOnBattery : $object.TimeOnBattery
; TimeToFullCharge : $object.TimeToFullCharge
Code : Tout sélectionner
Dim $PowerType, $PowerTimeRemain
If _LaptopPowerMode($PowerType, $PowerTimeRemain) Then
If $PowerType = 2 Then
MsgBox(0, "Infos", "L'ordinateur est connecté sur l'alimentation secteur")
Else
MsgBox(0, "Infos", "L'ordinateur est sur batterie, et il reste " & $PowerTimeRemain & _
" minutes d'autonomie")
EndIf
Else
MsgBox(16, "Erreur", "Erreur dans la détection du mode d'alimentation")
EndIf