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

Delphi Discussion :

détecter la fermeture d'une application


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 57
    Points : 40
    Points
    40
    Par défaut détecter la fermeture d'une application
    Bonjour à tous
    est-il possible de détecter la fermeture d'une application, je m'explique :
    j'ai une applicationDEPART qui lance d'autres applications (1 au choix).
    Losque que je lance l'application choisi, mon applicationDEPART se cache (Application.Hide).
    je voudrais que lorsque je ferme l'application qui à été lancée via applicationDEPART, l'applicationDEPART réapparaisse (Application.show) mais je ne sais pas comment détecter la fermeture de l'application

    sans être dedans c'est pas très claire donc si quelqu'un pense pouvoir m'aider, je suis près a fournir toute explication

    merci d'avance

  2. #2
    rbh
    rbh est déconnecté
    Membre confirmé Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Points : 473
    Points
    473
    Par défaut
    Salut
    Pour attendre la fermeture d'une application, direction cette section de la FAQ.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 57
    Points : 40
    Points
    40
    Par défaut
    la réponse pourrait fonctionner mais je passe par un ShellExecute pour lancer une des applications et pas part un CreateProcess

  4. #4
    rbh
    rbh est déconnecté
    Membre confirmé Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Points : 473
    Points
    473
    Par défaut
    Et alors?
    Moi je me suis fait une fonction qui utilise le code que je t'ai donné et dont je me sers exactement comme ShellExecute.
    Il n'y a aucun problème pour passer de l'un à l'autre. (tester chez + de 1000 clients sur des windows de 98 à XP).

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par rbh
    Moi je me suis fait une fonction qui utilise le code que je t'ai donné et dont je me sers exactement comme ShellExecute.
    Et bien dans ce cas et si ce n'est pas top secret tu peux nous proposer ton code pour enrichir la FAQ.

  6. #6
    rbh
    rbh est déconnecté
    Membre confirmé Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Points : 473
    Points
    473
    Par défaut
    Voila la fonction telle qu'elle est dans mon code:
    C 'est celle de la FAQ sauf que le chemin de l'appli et le param de ligne de commande sont passés en paramêtre de la fonction.
    Elle peut encore évoluer en passant plus de paramêtre .
    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
    procedure ShellAndWait(AppFullPath: PChar; Param: PChar);
    var
      StartInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
      Fin: Boolean;
    begin
    // SOURCE WWW.DEVELOPPEZ.COM => F.A.Q. Delphi
    // http://delphi.developpez.com/faq/?page=interexecution#lancercontroleapplication
     
      { Mise à zéro de la structure StartInfo }
      FillChar(StartInfo, SizeOf(StartInfo), #0);
      { Seule la taille est renseignée, toutes les autres options }
      { laissées à zéro prendront les valeurs par défaut }
      StartInfo.cb := SizeOf(StartInfo);
     
      { Lancement de la ligne de commande }
      if CreateProcess(nil, AppFullPath, Param, nil, False, 0, nil, nil, StartInfo, ProcessInfo) then
      begin
        { L'application est bien lancée, on va en attendre la fin }
        { ProcessInfo.hProcess contient le handle du process principal de l'application }
        Fin := False;
        repeat
          { On attend la fin de l'application }
          case WaitForSingleObject(ProcessInfo.hProcess, 200) of
            WAIT_OBJECT_0: Fin := True; { L'application est terminée, on sort }
            WAIT_TIMEOUT: ; { elle n'est pas terminée, on continue d'attendre }
          end;
          { Mise à jour de la fenêtre pour que l'application ne paraisse pas bloquée. }
          Application.ProcessMessages;
        until Fin;
        { C'est fini }
     
      end
      else RaiseLastOSError;
    end;

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 57
    Points : 40
    Points
    40
    Par défaut erreur
    y'a une erreur que je ne comprend pas (je suis quand meme que débutant)

    [Erreur] Unit1.pas(43): Types incompatibles : 'Char' et '_SECURITY_ATTRIBUTES'

    apparement cette erreur ce fait lors du CreateProcess
    if CreateProcess(nil, AppFullPath, Param, nil, False, 0, nil, nil, StartInfo, ProcessInfo) then
    ???????!!!!!!!!!

    merci

  8. #8
    rbh
    rbh est déconnecté
    Membre confirmé Avatar de rbh
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    384
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 384
    Points : 473
    Points
    473
    Par défaut
    Autant pour moi j'avais fait une rapide adaptation sans vérifier. Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateProcess(nil, AppFullPath, Param, nil, False, 0, nil, nil, StartInfo, ProcessInfo)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateProcess(nil, AppFullPath+' '+ Param, nil, nil, False, 0, nil, nil, StartInfo, ProcessInfo)
    et ça devrait marcher.
    En fait c'est le passage des paramêtre de la ligne de commande que j'ai ajouté pour faire comme pour ShellExecute.
    Si tu n'en as pas besoin, élimine le complêtement.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 57
    Points : 40
    Points
    40
    Par défaut c'est bon
    ca marche impécable, j'ai juste effacer le param parce qu'il y avait encore une erreur :
    [Erreur] Unit1.pas(46): Types incompatibles : 'String' et 'PChar'

    et que effectivement j'en ai pas besoin, d'ailleur je n'ai pas vraiment compris en quoi il fait parti d'un parametres puisque le parametre en question veut apparement un chemin

    enfin en tout cas sans le param ca marche.

    merci tout le monde

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

Discussions similaires

  1. Forcer la fermeture d'une application
    Par Bissada dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2005, 21h42
  2. fermeture d'une application après un temp d'inactivité?
    Par sitdown dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 24/08/2005, 15h44
  3. Détection de la fermeture d'une application
    Par vanitom dans le forum MFC
    Réponses: 6
    Dernier message: 19/08/2005, 18h11
  4. Détecter le lancement d'une application
    Par Neilos dans le forum Windows
    Réponses: 8
    Dernier message: 22/11/2004, 12h32
  5. [Event]Annuler la fermeture d'une application
    Par willowII dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 16/11/2004, 09h28

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