Fonction permettant de savoir si l'ordi portable est sur batterie, ou sur secteu

backhanakin Messages postés 4 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 1 juillet 2003 - 23 avril 2003 à 12:37
dicky33bx Messages postés 14 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 13 juillet 2012 - 18 avril 2004 à 11:26
Voila je recherche une fonction qui pourrai me dire si l'ordi est branché a son socle (donc sur secteur)
ou s'il est sur batterie
merci
backhanakin.

P.S en c++ svp

1 réponse

dicky33bx Messages postés 14 Date d'inscription jeudi 6 novembre 2003 Statut Membre Dernière intervention 13 juillet 2012 1
18 avril 2004 à 11:26
Salut backhanakin !

Voici comment faire pour savoir si le PC est sur batterie ou pas :

1. D'abord déclare la variable "PowerStatus" de type "SYSTEM_POWER_STATUS" comme suit :

SYSTEM_POWER_STATUS PowerStatus;

2. Ensuite, la fonction pour vérifier si sur secteur ou sur baterre et la charge de la

batterie :

GetSystemPowerStatus(&PowerStatus);

3. Puis tu regardes la valeur des différentes variables de PowerStatus :

* PowerStatus.ACLineStatus (indique si batterie sur secteur ou batterie)
=0 : Sur batterie
=1 : Sur secteur
=255 : Statut inconnu

* PowerStatus.BatteryFlag (indique si le niveau de la batterie est critique, bas, en cours

de chargement : c'est une association de valeur. Par exemple, si la batterie est basse et en

cours de chargement, BatteryFlag te renverras 10 [ 2 + 8] : Low et Charging)
=1 : Haut (High)
=2 : Bas (Low)
=4 : Critique (Critical)
=8 : En cours de chargement (Charging)
=128 : Aucun système de batterie (PC de bureau) (No system battery)
=255 : Statut inconnu (Unknown status)

* PowerStatus.BatteryLifePercent (indique le pourcentage de batterie de 0 à 100%)

* PowerStatus.BatteryLifeTime (indique le nombre de secondes restantes sur la batterie.

Perso sur mon PC, ça ne donne rien)

* PowerStatus.BatteryFullLifeTime (indique le nombre de secondes totales de batterie. Perso

sur mon PC, ça ne donne rien non plus)

* PowerStatus.Reserved1 : réservé, doit être égal à 0

En espérant que ceci puisse te dépanner.

------------------------------------------------------------
Pour dernière info, la doc du C++ :

The SYSTEM_POWER_STATUS structure contains information about the power status of the system.

typedef struct _SYSTEM_POWER_STATUS {
BYTE ACLineStatus;
BYTE BatteryFlag;
BYTE BatteryLifePercent;
BYTE Reserved1;
DWORD BatteryLifeTime;
DWORD BatteryFullLifeTime;
} SYSTEM_POWER_STATUS;
typedef struct SYSTEM_POWER_STATUS *LPSYSTEM_POWER_STATUS;


Members
----------
* ACLineStatus : AC power status. This parameter can be one of the following values:
Value Meaning
0 Offline
1 Online
255 Unknown status.
All other values are reserved.

* BatteryFlag : Battery charge status. This parameter can be a combination of the following values:
Value Meaning
1 High
2 Low
4 Critical
8 Charging
128 No system battery
255 Unknown status
All other values are reserved.

* BatteryLifePercent : Percentage of full battery charge remaining. This member can be a value in the range 0 to 100, or 255 if status is unknown. All other values are reserved.

* Reserved1 : Reserved ; must be zero.

* BatteryLifeTime : Number of seconds of battery life remaining, or 0xFFFFFFFF if remaining seconds are unknown.

* BatteryFullLifeTime : Number of seconds of battery life when at full charge, or 0xFFFFFFFF if full lifetime is unknown.

Remarks
----------
Windows 95 is only capable of estimating BatteryFullTime based on calculations on BatteryLifeTime and BatteryLifePercent. Without smart battery subsystems, this value may not be accurate enough to be useful.

Bon courage

@+

Dicky33bx
0
Rejoignez-nous