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

C++Builder Discussion :

Communiccation entre Appli


Sujet :

C++Builder

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

    Informations forums :
    Inscription : Mai 2003
    Messages : 4
    Points : 7
    Points
    7
    Par défaut [Résolu] Communiccation entre Appli
    Salut tout le monde
    Je developpe une appli qui doit lancer une autre appli, j'arrive à executer la nouvelle appli, mais le probleme est que une fois lancé l'ancienne appli se ferme alors que je veut qu'elle attende afin de récuperer le resultat de la nouvelle.
    Mon code est le suivant:
    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
     
    void TestExe::exeTest(AnsiString arg)
    {
            bool OK;
            TShellExecuteInfo Info;
     
            Info.cbSize = sizeof(Info);
            Info.fMask = SEE_MASK_NOCLOSEPROCESS;
            Info.lpVerb = NULL;
            Info.lpFile = getExe().c_str();//appel à une fonction dela classe
            Info.lpParameters = arg.c_str();//appel à une fonction dela classe
            Info.lpDirectory = getExeDir().c_str();//------II--------II-----------
            Info.nShow =SW_SHOW;
            ShellExecuteEx(&Info);
    }
    Merci d'avance pour votre aide

  2. #2
    Membre régulier
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Février 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Février 2003
    Messages : 54
    Points : 90
    Points
    90
    Par défaut
    Ben soit tu utilise un moyen détourné (par exemple ecrire tes infos dans un ficheir et les faire lire par la deuxièmes appli...)
    Soit tu laisses tes deux appli tourner et tu utilise par exemple un mémoire partagé (par contre je sais le faire en c sous unix mais jamais fait en builder)

  3. #3
    Membre habitué
    Avatar de Alacazam
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 88
    Points : 167
    Points
    167
    Par défaut
    Bonjour,

    Pour ce genre de lancement de processus, je te conseille d'utiliser spawnl.

    Si tu souhaites bloquer ton appli initiale, sers-toi du paramètre : P_WAIT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *t = Edit1->Text.c_str();
    ResEnvoie = spawnl(P_WAIT, t, t, NULL);
    Dans le cas contraire, utilise P_NOWAIT ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *t = Edit1->Text.c_str();
    ResEnvoie = spawnl(P_WAIT, t, t, NULL);
    utilise ensuite un Timer pour détecter si ta fenêtre créée existe toujours, si ce n'est pas le cas, tu peux alors récupérer la valeur retournée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char *s = "nom de la fenêtre";
    HWND H = FindWindow(NULL, s);
    if (!H) {
    	int y;
    	cwait(&y, ResEnvoie, WAIT_CHILD);
    	}
    J'espère avoir été à peu près clair

    Bonne Chance,
    Mathieu
    Développeur confirmé C++, Java, Python, JS.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 28
    Points : 32
    Points
    32
    Par défaut
    Sinon pour le transphert de donnée, les socket sur 127.0.0.1 sont pas mal !
    Fëanor13 alias Marmotte
    "An eye for an eye makes the whole world blind." - Gandhi -
    Je suis une quiche en Anglais, alors merci de ne pas me renvoyer sur des sites anglophones...
    Merci

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

Discussions similaires

  1. pb passage de données entre Appli et DLL
    Par Bobx dans le forum Delphi
    Réponses: 12
    Dernier message: 29/12/2006, 00h09
  2. passage de pointeurs entre appli delphi et DLL c++
    Par e-teo dans le forum Langage
    Réponses: 1
    Dernier message: 13/10/2005, 21h46
  3. [XSLT] Différence entre apply-templates et call-template
    Par Cpt.FLAM dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/04/2005, 18h47
  4. Comment minimiser le trafic réseau entre appli et serveur ?
    Par delphi+ dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 14h43
  5. Réponses: 3
    Dernier message: 05/05/2004, 10h23

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