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
"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
"sophie.cape" <sophie.cape@wanadoo.fr> a écrit dans le message de
news:fsvr1f$pjq$1@aioe.org...
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
"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
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"
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"
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"
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?
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?
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?
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
On 2 avr, 16:15, "sophie.cape" <sophie.c...@wanadoo.fr> 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?
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
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.
"sophie.cape" <sophie.cape@wanadoo.fr> wrote in message
news:ft00tc$dv6$1@aioe.org...
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.
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.
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.
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.
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.
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.
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.