Prog qui eteint l'ordi

Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
- - Dernière réponse : leprov
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
- 18 sept. 2004 à 15:27
salut a tous.
je voudrais faire un prog qui eteint l'ordi a une heure donnée et qui reste ds le systray afin de pouvoir avoir acces au processus en permanence.
mes questions:
comment recuperer l'heure et la comparer a une heure fixée (sans mfc, car j'ai trouvé les ctime, mais c'est du mfc ca non?).
ensuite la commande pour eteindre l'ordi c'est quoi?
derniere question, javais pensé a un alog du genre

ouvrir un thread qui verifie l'heure toutes les minutes

ouvrir et gerer fenetre

si fenetre fermée, fermer thread

eske ca serait comme ca qu'il faut faire?

merci d'avance pour vos réponses.
Afficher la suite 

17 réponses

Messages postés
402
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 2005
1
0
Merci
ctime != mfc

on va pas te donner le code d'un virus directement quand même ;) mais pour éteindre l'ordi il y a la possibilité de DOS :) ;)

ciao

:.: [DmXx] [[irc://irc.quakenet.org/ex-concept #eX-Concept @ QNet]] :.:
Commenter la réponse de D1m3x
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
13
0
Merci
lol cest pas pr un virus et si javais voulu faire un virus je ferais pas a une heure precise, je ferais inscrire au lancement de session ds hkcu et il eteindrais lordi direct :D
la cest pr un serveur.....il sallume le matin avec le bios, comme ca il peut aussi seteindre le soir :D
la commande pr eteindre l'ordi serait sympa.
ensuite, faut passer par un thread? et ds ce thread, vaut mieux mettre un timer ou verifier l'heure a chaque cycle? je pense qu'un timer serait mieux, mais bon....je demande, sait on jamais
Commenter la réponse de leprov
Messages postés
402
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 2005
1
0
Merci
Je vais accepter ces explications :P mais bon je pense également qu'un timer serait bien, après une heure tu dois exécuter la commende, shutdown dans dos (system( ) ) faut voir les paramètres à mettre,il y en a un qui sert a FORCER le shutdown, donc le shutdown sera direct et il n'y aura pas à confirmer) si tu ne trouve pas ce param tu peux simuler un appui de touche 'y' :D

Enfin bon il y en a des alternatives :)

Sinon tu peux aussi utiliser un thread qui prend l'heure au départ, et qui ensuite, vérifie chaque fois l'heure pour voir si on est pas arrivé à heure + 1 :)

ciao ;)

:.: [DmXx] [[irc://irc.quakenet.org/ex-concept #eX-Concept @ QNet]] :.:
Commenter la réponse de D1m3x
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
ExitWindowsEx() et en bas de page MSDN te donnera exemple complet pour adapter les droits sur les noyaux NT.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
13
0
Merci
merci beaucoup. sinon je voudrais pas que l'ordi s'eteigne au bout d'un certain temps mais a une heure donnée.....la solution m'aurais paru faire

createwindows (...)

createthread (...)

while (msg)
{
translate (msg);
dispatch (msg);
}

waitforsingleobject(...);

monthread ()
{
::sleep (30000);
if (currenttime==askedtime)
exitwindowsex (...);
}

(je pensais verifier toutes lmes 30 secondes pour etre sur d'avoir une verif par minute, paske il faut tenir compte du tps d'execution des instructions, paske si je fais toutes les 60 secondes, ya (peut-etre) le risque que je ne scanne pas le temps a la minute donnée avec les décalages que ca va créer...dites moi ce que vous en pensez. merci d'avance, et deja merci pour vos reponses. si vous avez une meilleure idée pour le timer, n'hesitez pas.
et pour les explications c'est pas une excuse bidon :D....de toutes facons je posterais le source quand j'aurais fini alors tu pourras vérifier :D

}
Commenter la réponse de leprov
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
waitforsingleobject() suffira, pas besoin de Sleep() car le systeme te dira quand c'est bon, une journee tient dans un DWORD en millisecondes il me semble.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
13
0
Merci
donc dans l'idée c'est bon.
donc il faudrait que je fasse comment ds ce cas? paske les threads, là....j'ai utilisé une seule fois.....donc bon....tu pourrais me dire vite fait un peu comme j'ai fait ds mon post d'au dessus comment il faudrait que je fasse stp? apres je me demerde avec msdn et compagnie....c'est juste que la avec juste un waitforsingleobject j'ai du mal a capter comment ca va marcher...merci d'avance
Commenter la réponse de leprov
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
au debut du thread tu calcules combien de millisecondes restantes entre now et heure d'eteindre.
GetSystemTimeAsFileTime, etc ...

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
13
0
Merci
euh....tu peux etre un peu plus explicite stp? kan jarrete le thread? kan jarrete lordi? dedans oou dehors du thread? je lui passe koi a mon thread? juste l'heure a laquelle faut eteindre? dans un CTime? enfin bref, sur le schema j'ai lidée, mais sur la mise en pratique, ca me semble un peu complexe....
Commenter la réponse de leprov
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
Que vient faire CTime et MFC ici ???

Ton thread n'a besoin d'aucun param s'il a juste a eteindre l'ordi.
Dans le thread:
1) GetSystemTimeAsFileTime, tu stockes result.
2) Remplit un SYTEMTIME pour heure de fin et de nouveau GetSystemTimeAsFileTime.
3) Le second - le 1er te donne la diff, non ? tu mets dans un DWORD sur waitforsingleobject et juste derriere extinction.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
13
0
Merci
bah cest bien ce kil me semblait, au debut du post on ma dit ctime != mfc......
bon bref.....
pk deux fois getsystemtimeasfiletime? comme ca ds le premier j'ai date heure courante et ds le second jai heure demandée pour date courante? cest ca? si cest ca ok. ensuite je sors de mon thread et j'eteind en dehors de mon thread....ok....mais pb, mon thread principal gere une fenetre ds le systray...alors je met mon wait a quel niveau?

en tous cas encore merci pour ton aide precieuse
Commenter la réponse de leprov
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
mais tu peux mettre ton wait direct dans le thred quand tu as calcule le temps a attendre, le reste est a toi de voir selon architecture de ton prog.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
13
0
Merci
euh?
le wait attend pas jusqu'a ce qu'un fes fils du thread ds lequel il est placé soit mort? donc si je le met ds le thread directement, ca va faire koi?
en fait a priori j'ai une fenetre invisible ds le systray, et je veux verifier en meme tps ke le fenetre......alors je voit pas o mettre le wait, dites moi si cet algo serait bon svp ( ca serait sympa)

createwindow
createthread

for ()
{
dispatch/translatemessage
wait (null, null);
}

thread:
{
if (heurecourante=heureattendue)
exiiwindowsex
exitthread
return 0;
}

si cest pas bon, si vous pouviez me mettre un algo et mexpliquer, ca serait sympa. merci d'avance
Commenter la réponse de leprov
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
Creeer un Event en global, le thread s'en servira.

Dans thread:
calcule temps restant.
WaitForSingleObject(hevent, temps);

Cela permet aussi de forcer proprement le thread a terminer.

Faut lire Richter si tu as des problemes avec les synchros de threads.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
13
0
Merci
oki merki, javais regardé sur petzold, mais javais pas trop trouvé, je vais fouiller richter.....merki...et l'extinction je la met ou ds l'histoire??????????????????a la sortie du thread? et vu ke le wait est ds le thread qu'est ce qui s'execute en meme tps? tout le reste du prog? donc je sais comment ou je met l'extinction?
et derniere question, cest koi un event? (au pire je vais fouiller richterpour levent.....si vraiment je soule.... :D)
Commenter la réponse de leprov
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
0
Merci
Regarde CreateEvent()

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
13
0
Merci
euh...
comment tu remplis une filetime? et puis en plus de ca, capte pas les events, tu pourrais me montrer vite fait? et mexpliquer? merci d'avance
Commenter la réponse de leprov