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

API, COM et SDKs Delphi Discussion :

Détecter l'arrêt du système ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Détecter l'arrêt du système ?
    Bonjour,

    Je rencontre un petit problème avec une application assez simple. Cette application fonctionne en permence tant que Windows tourne ( je l'a lance au démarrage ).
    Je veux éviter que l'utilisateur la ferme par erreur, donc lorsque l'utilisateur tente de la fermer, je demande confirmation.

    Or lorsque le PC s'arrête, j'aimerai que ce message ne s'affiche pas ( il n'a pas lieu d'être ). Je ne vois pas comment faire.

    Merci d'avance,
    Débutant Delphi 7 - Etudiant à l'ESISAR
    -----------------------------------------------------
    Vous cherchez un compteur internet ?
    Allez voir là : http://gti2003.free.fr

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Points : 129
    Points
    129
    Par défaut
    Avec cela, ça devrait aller :
    http://www.delphitips.com/tipstext.cgi?tipsId=12

    A+
    Consultez :
    - La F.A.Q Delphi + Les Cours Delphi
    - La sélection des Freewares Delphi

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Points : 60
    Points
    60
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      // déclaration de la procedure
    procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;
     
      // fermeture du programme par l'arret de windows[/color]
    procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
    begin
    inherited;
      // ton code lors d'un arret de windows, genre tu pourrais mettre
      // une variable a false, et tester dans ton OnClose si elle est a true
      // tu affiches un message, sinon tu l'affiches pas
    end;

    cette procedure permet de vraiment controler l'arret de windows, moi je trouve ca plus pratique le OnCloseQuery

    ________________________
    [Balises codes rajoutées par Lil_jam63]
    Pensez aux balises, svp, c'est plus agréable à lire et plus compréhensible.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Je n'ai pas encore résolu le problème...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
       shutdown:boolean;
     
    procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
    begin
    inherited;
    shutdown := true;
    end;
    Ensuite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
    if shutdown=false then
      begin
    // Je demande confirmation, puis avec CanClose, je ferme ou non l'application
      end
    // Sinon, l'application se ferme
    Mais le problème, c'est que je crois que le OnCloseQuery se produit AVANT que la programme détecte la fermeture de Windows, donc le message de confirmation de la fermture s'affiche dans tous les cas...[/quote]
    Débutant Delphi 7 - Etudiant à l'ESISAR
    -----------------------------------------------------
    Vous cherchez un compteur internet ?
    Allez voir là : http://gti2003.free.fr

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 138
    Points : 60
    Points
    60
    Par défaut
    ta var ShutDown declare la comme suit:

    ShutDown: bool = false;

    et petit raccourcit, pour tester un bool tu peux faire comme suit:

    if not ShutDown then // revient a 'if ShutDown = false

    if ShutDown then // revient a if ShutDown = true

    comme ta variable n'est pas definbie au depart, bin il prend une valeur, qui est celle qui dit d'afficher un message... enfin je crois que c'est ca, sinon essaye de plutot mettre ton code de message dans le OnClose plutot que le OnCloseQuery, car moi j'ai fait ca et ca marche

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Je vais essayer ça, mais si je mets la confirmation pour quitter l'application dans le OnClose, comment est ce que je reviens en arrière ( c'est à dire que je ne ferme pas l'application ) si l'utilisateur ne confirme pas qu'il vaut quitter ?
    Dans le OnCloseQuery, je faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CanClose = false;
    Exit;
    Débutant Delphi 7 - Etudiant à l'ESISAR
    -----------------------------------------------------
    Vous cherchez un compteur internet ?
    Allez voir là : http://gti2003.free.fr

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé... Dans le OnClose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ShutDown then // windows ferme l'application
    Application.Terminate;
    Ensuite, donc si l'ordinateur n'est pas en train de s'arrêter, je demande confirmation, et si l'utilisateur ne confirme pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Action := caNone;
    Exit;
    Pour ne pas fermer l'application. Et ça marche !
    Merci pour vos réponses.
    Débutant Delphi 7 - Etudiant à l'ESISAR
    -----------------------------------------------------
    Vous cherchez un compteur internet ?
    Allez voir là : http://gti2003.free.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. capable de détecter l'arrêt accidentel d'un processus système
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 10/08/2007, 11h15
  2. Arrêt du système avec Bluetooth utilisant ComPort
    Par pjarduin dans le forum C++Builder
    Réponses: 4
    Dernier message: 19/07/2007, 11h28
  3. Détecter l'arrêt d'une vidéo (bouton stop)
    Par levit dans le forum Flash
    Réponses: 2
    Dernier message: 01/05/2007, 14h50
  4. arrêt du système via un script
    Par jldgbu dans le forum Administration système
    Réponses: 3
    Dernier message: 20/03/2007, 17h01
  5. [D6] Comment détecter l'arrêt de Windows
    Par Lucien dans le forum Langage
    Réponses: 6
    Dernier message: 02/03/2006, 10h29

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