Bonjour,
je voudrais savoir comment on peut, via une fenetre ressemblant a celle de windows (arreter, redemarrer), eteindre ou redemarrer la machine sur laquelle je me trouve.
J'ai une appli Visual C++/MFC.
Merci
Bonjour,
je voudrais savoir comment on peut, via une fenetre ressemblant a celle de windows (arreter, redemarrer), eteindre ou redemarrer la machine sur laquelle je me trouve.
J'ai une appli Visual C++/MFC.
Merci
salut, voir ExitWindowsEx
exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 BOOL MySystemShutdown() { HANDLE hToken; TOKEN_PRIVILEGES tkp; // Get a token for this process. if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return( FALSE ); // Get the LUID for the shutdown privilege. LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; // one privilege to set tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; // Get the shutdown privilege for this process. AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0); if (GetLastError() != ERROR_SUCCESS) return FALSE; // Shut down the system and force all applications to close. if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0)) return FALSE; return TRUE; }
La fonction PostQuitMessage me semble pas mal :
http://msdn.microsoft.com/library/de...uitmessage.asp
Par contre, elle fait peut-être juste apparaitre la boite de dialogue "Arrêter/Redémarrer/etc."
en fait, je voudrais avoir 2 boutons (arreter et redemarrer).
tu penses que si je mets le code que tu m'as passé derrière mon bouton "Arreter", cela fonctionnerai??
et sinon pour redemarrer une idée??
Merci pour ton aide.
pataguillon,
j'ai jeté un coup d'oeil à ta proposition et ça pourrait etre un bon départ pour moi.
Par contre, la fonction PostMessageQuit(int ...) est vide. Pas besoin de mettre du code a l'interieur permettant de gerer l'integer nExitCode"??
le code que je t'ai donné permet d'arreter la machine, pour redémarrer, il faut utiliser un EWX_REBOOT
remarque, pour eteindre completement, il faut utiliser EWX_POWEROFF
voir msdn
En fait, j'ai même trouvé plus simple :
http://msdn.microsoft.com/library/de...twindowsex.asp
![]()
![]()
![]()
![]()
![]()
Donc, avec cette fonction ExitWindowsEx(...), tu peux mettre comme paramêtre EWX_SHUTDOWN ou EWX_REBOOT
Voilà, le tour est joué !
je vais tester tout ça et je vous recontact en cas de problèmes.
Merci à vous deux et bonne continuation
Ciao![]()
Sous NT le reboot sera refusé. Il faut ajuster ses privilèges
voir le code de nico
Partager