Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Connaitre l'etat de l'ordinateur

13 réponses
Avatar
sophie.cape
Bonjour
Je programme en C++ et je voudrais savoir s'il est possible de savoir si
windows est allumé, en veille, en veille prolongée, arreté.. pour un petit
programme sur l'electricité dépencée par un ordinateur.
J'attend vos réponses

10 réponses

1 2
Avatar
Jean-Claude BELLAMY
"sophie.cape" a écrit dans le message de
news:fsvr1f$pjq$
Bonjour
Je programme en C++ et je voudrais savoir s'il est possible de savoir si
windows est allumé, en veille, en veille prolongée, arreté.. pour un petit
programme sur l'electricité dépencée par un ordinateur.




Depuis un autre ordinateur je présume ?

Tout ce que tu pourras savoir, c'est si l'ordinateur concerné est acessible
depuis le réseau ou non, et rien d'autre!

Quand il est en veille prolongée, il est totalement arrêté par essence même
de la veille prolongée, donc aucune distinction n'est possible.
Il y a bien le fichier d'hibernation (hiberfil.sys), mais pour tester sa
présence et état il faudrait accéder aux ressources de l'ordinateur, donc il
faudrait ... qu'il soit démarré !!!
De toute façon, au niveau consommation électrique, arrêt et veille
prolongée, c'est STRICTEMENT la même chose.

En ce qui concerne la veille simple, c'est un peu plus complexe car dans cet
état l'ordinateur est toujours sous tension (mais en puissance réduite).
L'ordinateur peut redémarrer sur une action de la souris, du modem, de la
carte réseau (si elle est du type "Wake up LAN") ou encore du bouton de
marche.
Ici il faudra donc passer par la carte réseau, en lui envoyant le "paquet
magique" de réveil (trame contenant les octets FF FF FF FF FF FF suivis de
de l'adresse MAC répétée 16 fois, et éventuellement un mot de passe de 4 ou
6 octets).


Donc pour tester l'état "veille" ou "allumé", on pourra procéder ainsi :

- accès à une resource réseau dont on sûr de l'existence,
p.ex. le fichier "c:boot.ini"
-> si l'accès réussit, c'est que l'ordinateur est actif sur le réseau.
-> si l'accès échoue, on envoie le paquet magique,
puis on reteste l'accès à la ressource
-> si l'accès réussit, c'est que l'ordinateur était en veille
et qu'à présent il est actif sur le réseau.
-> si l'accès échoue, cela veut dire uniquement que
l'ordinateur n'est pas visible depuis le réseau.

- si au final l'accès a échoué, on peut RIEN conclure.
En effet, l'ordinateur peut très bien être actif, mais avec une carte réseau
HS, ou avec une configuration réseau qui interdise toute transaction, (pas
de réponse aux "Ping", partages désactivés, ...)




--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Avatar
Solanar
Maître "sophie.cape" nous raconte
C'est seulement un programme concu pour un ordinatuer seul qui
démarre au démarrage de windows pour compter le temps qui s'est
écoulé depuis son démarrage.
Le probleme est que si l'utilisateur met son ordinateur en veille
prolongée, l'ordinateur ne consomme rien mais le programme ne detecte
rien (car windows s'arret pas).
On pourais alors alors essayer d'acceder a une ressource pour savoir
si l'ordinateur est allumé ou en veille prolongée, mais s'il n'accede
pas a la ressource,l'ordinateur peut etre seulement en veille, et pas
en veille prolongée, ce qui change pour mesurer la consommation
d'electricité.
N'existrait pas une fonction de l'api windows qui permetrait de savoir
directement dans quel etat est l'ordinateur?



Si c'est pour la conso je mettrai plutot un compteur sur la prise...

--
Solanar
"Etre libre, c'est n'avoir rien à perdre"
Avatar
sophie.cape
C'est seulement un programme concu pour un ordinatuer seul qui démarre au
démarrage de windows pour compter le temps qui s'est écoulé depuis son
démarrage.
Le probleme est que si l'utilisateur met son ordinateur en veille prolongée,
l'ordinateur ne consomme rien mais le programme ne detecte rien (car windows
s'arret pas).
On pourais alors alors essayer d'acceder a une ressource pour savoir si
l'ordinateur est allumé ou en veille prolongée, mais s'il n'accede pas a la
ressource,l'ordinateur peut etre seulement en veille, et pas en veille
prolongée, ce qui change pour mesurer la consommation d'electricité.

N'existrait pas une fonction de l'api windows qui permetrait de savoir
directement dans quel etat est l'ordinateur?
Avatar
Christian ASTOR
On 2 avr, 16:15, "sophie.cape" wrote:

Le probleme est que si l'utilisateur met son ordinateur en veille prolong ée,
l'ordinateur ne consomme rien mais le programme ne detecte rien (car windo ws
s'arret pas).
On pourais alors alors essayer d'acceder a une ressource pour savoir si
l'ordinateur est allumé ou en veille prolongée, mais s'il n'accede pas a la
ressource,l'ordinateur peut etre seulement en veille, et pas en veille
prolongée, ce qui change pour mesurer la consommation d'electricité.

N'existrait pas une fonction de l'api windows qui permetrait de savoir
directement dans quel etat est l'ordinateur?



Windows envoie WM_POWERBROADCAST
Avatar
Antoine ROUCHET
"sophie.cape" wrote in message
news:ft00tc$dv6$
C'est seulement un programme concu pour un ordinatuer seul qui démarre au
démarrage de windows pour compter le temps qui s'est écoulé depuis son
démarrage.
Le probleme est que si l'utilisateur met son ordinateur en veille
prolongée, l'ordinateur ne consomme rien mais le programme ne detecte rien
(car windows s'arret pas).
On pourais alors alors essayer d'acceder a une ressource pour savoir si
l'ordinateur est allumé ou en veille prolongée, mais s'il n'accede pas a
la ressource,l'ordinateur peut etre seulement en veille, et pas en veille
prolongée, ce qui change pour mesurer la consommation d'electricité.

N'existrait pas une fonction de l'api windows qui permetrait de savoir
directement dans quel etat est l'ordinateur?



Bonjour,

Tu peux faire une simple mesure périodique de l'heure, genre toutes les x
secondes. Si entre deux mesures l'écart est supérieur à mettons x*2
secondes, alors tu peux partir du principe que l'ordinateur est passé par
une veille prolongée.

Antoine.
Avatar
Sylvain SF
sophie.cape wrote on 03/04/2008 21:50:
Le probleme c'est que si on constate un écart, on ne sait pas si
l'ordinateur est en veille prolongée ou en veille simple.



et c'est grave ?

je veux dire d'affirmer sans chercher !? car il est quasi-évident
que l'OS envoie une notification différente dans les 2 cas.

au delà êtes-vous sur d'avoir analyser judicieusement le problème?
votre exposé commençant par "comment faire tourner un programme
sur un PC *éteint* laisse quelque doutes ...

si laborieusement vous arrivez à mesurer ce qui est déjà enregistré
sur le log système (ie un event à chaque démarrage, un à chaque
arrêt, un à chaque mise en veille, ...) ne craigniez-vous pas de
découvrir ce que vous savez sûrement déjà (que le PC est resté en
marche toute la nuit tel jour, ou qu'il est utilisé x heures tel
autre jour) ? si pour souci est énergétique, mesurez le temps de
marche ne vous donnera que de très long - ou au prix de grosses
approximations - sa dépense énergétique, un watt-mêtre ou un
compteur de consommation sur sa prise serait bien plus
instructif.

Sylvain.
Avatar
sophie.cape
Le probleme c'est que si on constate un écart, on ne sait pas si
l'ordinateur est en veille prolongée ou en veille simple.
Avatar
Thierry
"sophie.cape" a écrit dans le message de news:
ft38ue$7qm$

Le probleme c'est que si on constate un écart, on ne sait pas si
l'ordinateur est en veille prolongée ou en veille simple.



*etait*

WM_POWERBROADCAST doit satisfaire tes besoins.
Avatar
Thierry
"Thierry" a écrit dans le message de news:
47f5e350$0$27963$
"sophie.cape" a écrit dans le message de news:
ft38ue$7qm$

Le probleme c'est que si on constate un écart, on ne sait pas si
l'ordinateur est en veille prolongée ou en veille simple.



*etait*

WM_POWERBROADCAST doit satisfaire tes besoins.



+ WM_ENDSESSION
Avatar
sophie.cape
>>
WM_POWERBROADCAST doit satisfaire tes besoins.



+ WM_ENDSESSION





Desolé mais je ne connais pas trop l'api windows. Comment recuperer ces
valeurs?
1 2