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 :

Lancement prog externe, récupérer handle


Sujet :

Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut Lancement prog externe, récupérer handle
    Bonjour !

    Quand on lance une appli externe (avec shellexecute ou createprocess) le handle de fenêtre de l'appli n'est disponible que quand l'appli en question est complètement lancée.

    Y a t il un moyen de savoir quand l'appli est complètement lancée ? actuellement je fais un sleep(2000) avant de faire un findwindow mais c pas très élégant...

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    CreateProcess a, comme parametre, un TProcessInformation. Cette structure a le handle de l'appli externe

    A+

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    certes, mais le handle renvoyé par createprocess est le handle général de l'appli mais celui de sa fenêtre principale...
    J'ai trouvé waitfor() dans l'aide, mais je n'arrive pas à trouver dans quelle unité ça se trouve... vous savez ?

  4. #4
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Salut

    pour que le prog attende suffisamment pour les machines lentes, mais passe rapidement à la suite pour les machines rapides, tu peux faire un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ShellExecute( ... )
    for i := 1 to 20 do
      begin
      H := FindWindows( ... )
      if H valide then Break;
      Sleep( 100 );
      end;
    Comme ceci, le prog attends au max 2sec, par contre, dès qu'il a trouvé, il passe à la suite c'est OK.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    ça marche ! à condition de faire un petit sleep de plus juste avant le break, sinon l'affichage de l'écran n'est pas rafraichi...

  6. #6
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Citation Envoyé par zarbouine
    ça marche ! à condition de faire un petit sleep de plus juste avant le break, sinon l'affichage de l'écran n'est pas rafraichi...
    Ce serait pas plutot un Application.ProcessMessages qu'il manque plutot avant le break ?
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  7. #7
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    ben non j'avais essayé.
    Manifestement il faut que l'écran du prog externe ait le temps de s'afficher complètement avant de passer à la suite, sinon l'écran n'est pas rafraichi...

  8. #8
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut! C'est ce problème que j'ai eu lorsque j'ai réalisé cette démo :
    http://delphi.developpez.com/sources...ion#SUBMyShell

    Car avec certain programme, la 1ère fenêtre affichée (et parfois invisible ou cachée) n'est pas forcément la fenêtre principale...
    De retour parmis vous après 10 ans!!

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

Discussions similaires

  1. Récupérer Focus après lancement commande externe
    Par franck06 dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 06/05/2011, 09h50
  2. lancement programme externe bizarre
    Par edenyorke dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2007, 10h23
  3. [Runtime] Lancement Fichier Externe
    Par papatte62360 dans le forum Runtime
    Réponses: 11
    Dernier message: 19/04/2007, 16h07
  4. récupérer Handle de Fenêtre après CreateProcess
    Par ejaecker dans le forum Delphi
    Réponses: 5
    Dernier message: 13/09/2006, 12h20
  5. Lancer un prog externe et attendre son arret et continuer
    Par p_ping dans le forum Général Python
    Réponses: 5
    Dernier message: 28/02/2006, 21h07

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