IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

eteindre/redemarrer la machine


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 120
    Par défaut eteindre/redemarrer la machine
    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

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    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;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    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."

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 120
    Par défaut
    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.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    Avec le code de nico-pyright(c), tu peux tout faire

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 120
    Par défaut
    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"??

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    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

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Par défaut
    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é !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 120
    Par défaut
    je vais tester tout ça et je vous recontact en cas de problèmes.
    Merci à vous deux et bonne continuation
    Ciao

  10. #10
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Sous NT le reboot sera refusé. Il faut ajuster ses privilèges
    voir le code de nico

Discussions similaires

  1. Redemarrer automatiquement une machine après un crash ou une coupure de courant.
    Par Arthurbean dans le forum Administration système
    Réponses: 3
    Dernier message: 21/05/2007, 13h44
  2. éteindre les machines XP du reseau
    Par irnatene dans le forum Réseau
    Réponses: 7
    Dernier message: 10/11/2006, 15h03
  3. Comment éteindre des machines à distance
    Par LeYouss dans le forum Linux
    Réponses: 4
    Dernier message: 26/04/2006, 09h41
  4. Réponses: 9
    Dernier message: 30/03/2006, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo