Page 1 sur 1

[Func] _LaptopPowerMode - Détection mode d'alimentation.

Posté : sam. 16 mai 2009 11:18
par Tlem
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 :

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
Un exemple de son utilisation :

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