Prog qui eteint l'ordi

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 - 15 sept. 2004 à 10:15
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.

17 réponses

D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
15 sept. 2004 à 13:17
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]] :.:
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
15 sept. 2004 à 13:44
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
0
D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
15 sept. 2004 à 13:50
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]] :.:
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 sept. 2004 à 19:29
ExitWindowsEx() et en bas de page MSDN te donnera exemple complet pour adapter les droits sur les noyaux NT.

ciao...
BruNews, MVP VC++
0

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

Posez votre question
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
16 sept. 2004 à 10:43
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

}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 sept. 2004 à 11:03
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++
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
16 sept. 2004 à 11:17
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 sept. 2004 à 11:38
au debut du thread tu calcules combien de millisecondes restantes entre now et heure d'eteindre.
GetSystemTimeAsFileTime, etc ...

ciao...
BruNews, MVP VC++
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
16 sept. 2004 à 11:55
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....
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 sept. 2004 à 12:06
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++
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
16 sept. 2004 à 12:16
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 sept. 2004 à 12:28
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++
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
17 sept. 2004 à 13:05
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 sept. 2004 à 13:25
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++
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
17 sept. 2004 à 13:34
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)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 sept. 2004 à 13:38
Regarde CreateEvent()

ciao...
BruNews, MVP VC++
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
18 sept. 2004 à 15:27
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
0
Rejoignez-nous