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

Langage Delphi Discussion :

eteindre l'ordi


Sujet :

Langage Delphi

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    0
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 0
    Points : 314
    Points
    314
    Par défaut eteindre l'ordi
    Bonjour

    Comment faire pour eteindre le PC (sans la confirmation).

  2. #2
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut
    Avec la fonction API :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExitWindowsEx(**option**, 0)
    **option** peut prendre les valeurs EWX_SHUTDOWN, EWX_REBOOT, .... et ds ton cas je crois EWX_FORCE
    Cette méthode ne marche que pour windows 9x, pour NT c'est un peu + compliqué

  3. #3
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Je vous recopie tel quel un message posté par mes soins il y a quelques temps sur un autre forum
    La question était: comment appeler la boîte de fermeture de Windows?

    Il y a plusieurs solutions à ce problème. Aucune n'est vraiment
    complètement satisfaisante, mais on peut quand même faire
    quelque chose...

    La plus simple est d'utiliser un objet Shell et d'appeler la procédure
    ShutDownWindows. Je pense que cet objet n'est disponible que dans les
    versions de windows ayant Internet Explorer 4 au minimum (mais je n'en
    suis pas sûr, à vérifier).
    Cette méthode permet d'appeler le dialogue habituel de Windows.

    Une autre technique est de créer un dialogue qui ressemble à celui de
    Windows et d'appeler la fonction ExitWindowsEx. Celle-ci permet
    d'arrêter le système sans passer par le dialogue habituel de Windows
    (avec quelques restrictions sous NT).

    Une dernière méthode (à ma connaissance) consiste à passer par les
    méthodes InitiateSystemShutdown et ses copines, mais je pense que
    cela dépasse les besoins dont nous parlons.

    A mon avis le meilleur moyen est d'utiliser les 2 premières techniques
    conjointement. C'est à dire de faire une fonction qui tente d'utiliser
    le shell, et qui si ça ne marche pas utilise la deuxième technique (qui
    elle doit toujours fonctionner).

    Comme un petit peu de code en dit toujours plus qu'un long discours:

    (* Attention, ce code n'a pas été vérifié! *)
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    unit Unit2;
     
    interface
    uses
      Windows;
     
    type
    (* Traduction rapide du SDK Windows (voir aide sur ExitWindowsEx pour plus d'infos)
    EWX_FORCE : force tous les processus à s'arrêter. Les applications ne reçoivent pas les messages
      WM_QUERYENDSESSION et WM_ENDSESSION. Cela peut causer une perte de données dans les applications
      en cours. Ce flag ne doit être utilisé qu'en cas d'urgence.
     
    EWX_LOGOFF :
      Termine tous les processus s'exécutant dans le contexte de sécurité du processus
      appelant la fonction ExitWondowsEx. Déconnecte ensuite l'utilisateur.
     
    EWX_POWEROFF :
      Arrête le système et coupe l'alimentation. Le système doit être capable de
      couper son alimentation par logiciel. Attention, sous Windows NT (2000, XP)
      le process courant doit avoir le privilège SE_SHUTDOWN_NAME.
     
    EWX_REBOOT :
      Arrête et redémarre le système. Même remarque que pour EWX_POWEROFF.
     
    EWX_SHUTDOWN :
      Arrête le système jusqu'au point où il est sans danger de couper l'alimentation.
      Tous les buffers de fichiers ont été vidés sur disque et tous les processus
      ont été stoppés. Même remarque que pour EWX_POWEROFF.
    *)
     
      TExitWindowsMode = (ewmForce, ewmLogOff, ewmPowerOff, ewmReboot, ewmShutdown);
      TExitWindowsModes = set of TExitWindowsMode;
     
    procedure ShutDownDialog;
    function ShutDown(Modes: TExitWindowsModes): boolean;
     
    implementation
    uses
      comobj;
     
    procedure ShutDownDialog;
    var
      ShellObject: variant;
    begin
      ShellObject:= CreateOleObject('Shell.Application');
      ShellObject.ShutdownWindows;
    end;
     
     
    function ShutDown(Modes: TExitWindowsModes): boolean;
    const
      // La définition d'un tableau permet de s'affranchir des éventuelles modifications
      // des valeurs de l'API
      WindowsFlags : array[TExitWindowsMode] of UINT = (
        EWX_FORCE,
        EWX_LOGOFF,
        EWX_POWEROFF,
        EWX_REBOOT,
        EWX_SHUTDOWN);
    var
      flags: UINT;
      reserved: DWORD;
      i: TExitWindowsMode;
    begin
      flags:= EWX_LOGOFF; // = 0
      reserved:= 0;
      for i:= Low(TExitWindowsMode) to High(TExitWindowsMode) do
        if i in Modes then
          flags:= flags or WindowsFlags[i];
      result:= ExitWindowsEx(flags, reserved);
    end;

  4. #4
    psl
    psl est déconnecté
    Membre actif
    Avatar de psl
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 98
    Points : 242
    Points
    242
    Par défaut
    Bonsoir,
    On peut aussi utiliser des composants spécifiques qui remplissent cette fonction d'arrêt.
    Va sur http://www.torry.net est fait une recherche avec shutdown
    @+
    Ubuntu 18.04 LTS

  5. #5
    Membre averti Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Points : 437
    Points
    437
    Par défaut
    tu fait un shellexecute avec 'shutdown -s'

Discussions similaires

  1. comment eteindre le PC automatiquement ?
    Par enseignant_info dans le forum Windows
    Réponses: 12
    Dernier message: 28/11/2012, 07h49
  2. Mon Ordi tarde à s'eteindre
    Par Thes32 dans le forum Ordinateurs
    Réponses: 6
    Dernier message: 14/03/2008, 12h46
  3. Eteindre son ordi automatiquement
    Par bilb0t dans le forum Windows XP
    Réponses: 6
    Dernier message: 03/05/2006, 09h39
  4. Connexion entre deux ordi [Débutant]
    Par Ryadus dans le forum Développement
    Réponses: 2
    Dernier message: 12/06/2003, 21h47
  5. Réponses: 5
    Dernier message: 25/03/2003, 19h43

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