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 :

enchaîner deux programmes séquentiellement.


Sujet :

Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Points : 107
    Points
    107
    Par défaut enchaîner deux programmes séquentiellement.
    Je voudrais enchaîner deux programmes séquentiellement.
    Si je fais ceci, ils s'exécutent simultanément.

    Qu'est-ce que je peux mettre entre les deux appels pour que le 2ème attende la fin du 1er.?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        // lancement programme 1
        ShellExecute(Handle,'Open',PChar(ProgrammeListe.Strings[0]),nil,nil,SW_SHOWDEFAULT);
        // .....attendre la fin du programme 1  ???
        // lancement programme 2
        ShellExecute(Handle,'Open',PChar(ProgrammeListe.Strings[1]),nil,nil,SW_SHOWDEFAULT);
    Merci d'avance pour vos réponses

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    voici ce que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function LanceAppliAttente(Const NomFichier, Param:string):boolean;
    var
     StartInfo : TStartupInfo; 
     ProcessInformation : TProcessInformation; 
    begin 
     result:=true; 
     ZeroMemory(@StartInfo, sizeof(StartInfo));
     StartInfo.cb:=sizeof(StartInfo); 
     if CreateProcess(nil, PChar(NomFichier + ' ' + Param), nil, nil, true, 0, nil, nil, StartInfo, ProcessInformation) then
       WaitForSingleObject(ProcessInformation.hProcess, INFINITE) // attend que l'application désignée par le handle ProcessInformation.hProcess soit terminée 
     else 
      result:=false; 
    end;
    Bruno

  3. #3
    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

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Points : 107
    Points
    107
    Par défaut
    merci pour ces deux réponses hyper-rapides.

    Je vais tester tout cela.

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Points : 107
    Points
    107
    Par défaut
    La solution proposée par Bruno et par Cadetill (qui est pratiquement la même) fonctionne parfaitement.
    Encore merci.

    Ces programmes que je lance séquentiellement peuvent parfois dans certains cas être inclus dans une boucle sans fin.

    Le problème qui se pose alors est d'interrompre cette boucle par un évènement externe. Ces programmes interceptent les évènements clavier et souris.

    La seule solution que j'ai trouvée est de tester la position de la touche CAPS LOCK entre deux lancements à l'intérieur de la boucle.
    Cela marche mais peut-être existe t-il une autre meilleure solution?

  6. #6
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    à chaque démarrage de chaque boucle tu pourrais peut-être imaginer de lancer une boîte de dialogue demandant à l'utilisateur s'il veut interrompre le déroulement, et cliquer automatiquement sur non au bout de quelques secondes par exemple
    Donnez un poisson à un homme et il mangera pendant un jour... Apprenez-lui à pêcher et il s'assiéra dans une barque et boira de la bière toute la journée

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 126
    Points : 107
    Points
    107
    Par défaut
    Merci pour ta réponse Denokan, mais cette solution ne me convient pas.

    Cette application consiste à projeter devant un public des vidéos ou (et)diaporamas enchainés les uns aux autres et il n'est pas question de provoquer une interruption entre chaque lancement.

    La solution CAPS LOCK fonctionne très bien, je me demandais simplement s'il n'existait pas d'autres solutions plus astucieuses.

  8. #8
    Membre éclairé
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Points : 746
    Points
    746
    Par défaut
    alors peut-être cette page ?
    Donnez un poisson à un homme et il mangera pendant un jour... Apprenez-lui à pêcher et il s'assiéra dans une barque et boira de la bière toute la journée

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

Discussions similaires

  1. Faire communiquer deux programmes python
    Par bestdomdom dans le forum Général Python
    Réponses: 5
    Dernier message: 26/10/2006, 09h30
  2. Lancer deux programmes d'installation un après l'autre
    Par annedeblois dans le forum Windows
    Réponses: 21
    Dernier message: 01/08/2006, 21h04
  3. Réponses: 11
    Dernier message: 09/09/2005, 13h51
  4. [TP] Echanger des données entre deux programmes
    Par ILIAS Raphaël dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 22/03/2005, 09h31

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