Uptime

winwarrior Messages postés 654 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 10 février 2009 - 21 août 2005 à 01:44
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 21 août 2005 à 20:34
Bonjour,

Je pose ma question ici car c'est mon dernier recours, j'ai cherché sur
google et apres une semaine j'ai toujours pas trouvé de solution.

Voilà alors en gros je voudrais récuperer le temps que le pc est allumé (uptime) (sous win32),

j'ai trouvé GetTicksCount() mais cette fonction est limitée à plus ou moins 45 jours ..

Ensuite j'ai trouvé ceci (http://www.warriorhouse.net/uptime.cpp), qui
récupere une clef dans la base de registre.. mais ce dernier est
facilement falcifiable en changeant la date de windows.

Avez vous un code ou une fonction qui pourrait m'aider ?



Merci d'avance :)

win

[irc://irc.chatown.org/warriorhouse irc.chatown.org]

10 réponses

cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
21 août 2005 à 02:32
QueryPerformanceCounter & QueryPerformanceFrequency ne font pas l'affaire?

Urgo
0
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
21 août 2005 à 02:39
Excuse-moi pour la connerie que je viens de dire, j'ai grillé mon routeur et j'ai la tête dans les nuages...



En effet GetTickCount() est limité à 32 bits (49.7 jours maxi).



Il faut donc utiliser ZwQuerySystemInformation() de ntdll.dll pour une précision excellente, et (presque) pas limitée en temps.



Va voir ici :

http://www.cppfrance.com/code.aspx?ID=27961



Ciao
Urgo
0
winwarrior Messages postés 654 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 10 février 2009 1
21 août 2005 à 04:06
Merci !!! Grace à tes conseils, j'ai pu orienter mes recherches vers de nouvelles fonctions, j'ai utilisé:



__int64 a, b;

int uptime;

QueryPerformanceCounter((LARGE_INTEGER*) &a);

QueryPerformanceFrequency((LARGE_INTEGER*) &b);

uptime = a/b;



Dis moi ce que t'en pense :) (ça a l'air de bien fonctionner)



Et encore merci.


win

[irc://irc.chatown.org/warriorhouse irc.chatown.org]
0
winwarrior Messages postés 654 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 10 février 2009 1
21 août 2005 à 05:04
QueryPerformanceCounter et QueryPerformanceFrequency ne vont pas au
dessus de 49.7jours ? (pas encore le bon uptime pour confirmer ^^)

win

[irc://irc.chatown.org/warriorhouse irc.chatown.org]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
21 août 2005 à 05:29
Va voir le lien que je t'ai passé, ça utilise les API natives, y'a pas mieux ;)

Urgo
0
winwarrior Messages postés 654 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 10 février 2009 1
21 août 2005 à 06:06
Je suis allé voir mais ça me dépasse :/

j'ai éssayé de modifier le code pour récuperer juste le nombre de secondes et je n'arrive pas au résultat voulu..


J'ai vu aussi qu'il y avait les fonctions NtQueryPerformanceCounter et
NtQueryPerformanceFrequency dans la librairie ntdll, alors ça revient
au même non ?


win

[irc://irc.chatown.org/warriorhouse irc.chatown.org]
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
21 août 2005 à 08:47
Pourquoi ne pas tout simplement faire une différence entre la date de début et la date de fin d'exécution, si tu n'as pas besoin de précision inférieure à la seconde ?

.... time().


Cordialement,
Xterminhate.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
21 août 2005 à 10:26
Moi j'ai jamais laissé mon PC allumé plus de 48 heures de suite.
D'accord avec Xterminhate pour utiliser uniquement la date
0
winwarrior Messages postés 654 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 10 février 2009 1
21 août 2005 à 19:47
J'ai besoin que le programme récupere l'uptime du pc et pas l'uptime du
programme (sachant que le programme n'est pas censé être lancé au
démarrage du pc). la aparemment ça fonctionne correctement avec le code
que j'ai mis plus haut :)



bonne soirée.

win

[irc://irc.chatown.org/warriorhouse irc.chatown.org]
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
21 août 2005 à 20:34
Je pensais que ton prog était lancé au démarrage du PC.

Regarde cette source: http://www.cppfrance.com/code.aspx?ID=27961
0
Rejoignez-nous