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 :

[Borland C++ Builder] Le DOS dans un cadre de la Form ?


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 10
    Points
    10
    Par défaut [Borland C++ Builder] Le DOS dans un cadre de la Form ?
    Bonjour tout le monde,
    dans le cadre d'un projet simple, je voudrais exécuter une ligne de commande mais dont le résultat puisse être visualisé dans un cadre (un TEdit ???) de ma Form.
    Pour l'instant je fais un ShellExecute(0, 0, "xi_portable_Win.bat", 0, 0 , SW_SHOW );
    Celui-ci contient une requête vers un programme qui surveille de l'arduino, donc elle doit rester ouverte.
    Mais j'aimerais que le code qui apparaît sous DOS soit affiché dans un cadre et que je puisse fermer ce cadre pour faire sauter le processus comme quand je ferme la fenêtre DOS.

    Voilà ma liste au Père Noel
    Et je viens de passer un paquet d'heures à chercher sur le web....ben rien.

    Merci mille fois d'avance si quelqu'un a une piste....

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Fait une recherche Google sur l'usage des PIPES
    tu trouveras beaucoup d'exemples aussi pour c++ Builder
    cdlt
    par exemple http://www.leunen.com/cbuilder/redirect.html
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    Merci des infos ! Mais je suis trop débutant pour comprendre quoi que ce soit à ces codes....mince !!!

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    Après quelques mois de boulot mon projet a beaucoup avancé ! https://github.com/technologiescollege/s2a_fr
    En fait j'ai quasi fini...à part cette intégration du shell.

    Grâce à l'idée de DjmSoftware j'ai bien avancé en compréhension, MAIS j'ai un problème dans le CreateProcess.
    En effet je veux exécuter l'équivalent sous DOS de ".\Python\python.exe s2a.py COM13", mais je ne parviens pas à transmettre cette ligne dans CreateProcess, quelqu'un peut me demander de cette simple connerie ?

    Merci beaucoup.

  5. #5
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    le code suivant est parfaitement fonctionnel tu peux essayer de l'intégrer tout ou en partie dans ton code
    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
    36
    37
    38
    39
     
    bool __fastcall TForm1::CreateAndWaitUntilTerminated(char * PrgName, char* ParamList, long* Errorcode)
    {
      unsigned long ProcessResult;
      STARTUPINFO si;
      PROCESS_INFORMATION  pi;
      ZeroMemory(&si,sizeof(si));
      si.cb=sizeof(si);
      bool result=CreateProcess(PrgName,
                                ParamList,
                                NULL,
                                NULL,
                                false,
                                DETACHED_PROCESS,
                                NULL,
                                NULL,
                                &si,
                                &pi);
     if(!result)
      {
        *Errorcode=GetLastError();
        return false;
      }
      do
       {
        Sleep(50);
        Application->ProcessMessages();
        GetExitCodeProcess(pi.hProcess,
                           &ProcessResult);
       }
       while (ProcessResult==STILL_ACTIVE);
       CloseHandle(pi.hThread);
       CloseHandle(pi.hProcess);
       *Errorcode=ProcessResult;
       return true;
     
     
            //TODO: Add your source code here
    }
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    Merci ! Mais j'ai toujours des pb quand j'utilise mon code (que j'ai repiqué du lien que tu m'avais déjà mis) ou le tien, et je pense que c'est dû à mon appel à CreateProcess. Quand je clique sur un bouton je veux qu'il exécute ça :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    
      //create pipe for the console stdout
      SECURITY_ATTRIBUTES sa; 
      ZeroMemory(&sa,sizeof(SECURITY_ATTRIBUTES)); 
      sa.nLength=sizeof(SECURITY_ATTRIBUTES); 
      sa.bInheritHandle=true; 
      sa.lpSecurityDescriptor=NULL; 
      HANDLE ReadPipeHandle; 
      HANDLE WritePipeHandle;       // not used here
      if(!CreatePipe(&ReadPipeHandle,&WritePipeHandle,&sa,0)) 
    		RaiseLastWin32Error();
    
      //Create a Console 
      STARTUPINFO si; 
      ZeroMemory(&si,sizeof(STARTUPINFO)); 
      si.cb=sizeof(STARTUPINFO); 
      si.dwFlags=STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;
      si.wShowWindow=SW_HIDE; 
      si.hStdOutput=WritePipeHandle; 
      si.hStdError=WritePipeHandle;
    
      PROCESS_INFORMATION pi;
      ZeroMemory(&pi,sizeof(PROCESS_INFORMATION));
      if(!CreateProcess(".\\s2a\\Python\\python.exe", ".\\s2a\\s2a.py COM13", NULL, NULL, false, 0, NULL, NULL, &si,&pi))
    	  RaiseLastWin32Error();
    
      //Read from pipe 
      char Data[1024]; 
      for (;;)
      {
        DWORD BytesRead; 
        DWORD TotalBytes; 
        DWORD BytesLeft; 
    
    	//Check for the presence of data in the pipe
        if(!PeekNamedPipe(ReadPipeHandle,Data,sizeof(Data),&BytesRead, 
            &TotalBytes,&BytesLeft))RaiseLastWin32Error(); 
        //If there is bytes, read them 
        if(BytesRead) 
        { 
          if(!ReadFile(ReadPipeHandle,Data,sizeof(Data)-1,&BytesRead,NULL)) 
              RaiseLastWin32Error(); 
          Data[BytesRead]='\0'; 
          Memo1->Lines->Add(AnsiString(Data)); 
    
        } 
        else 
        { 
          //Is the console app terminated? 
          if(WaitForSingleObject(pi.hProcess,0)==WAIT_OBJECT_0)break; 
    
        } 
      } 
      CloseHandle(pi.hThread);
      CloseHandle(pi.hProcess); 
      CloseHandle(ReadPipeHandle); 
      CloseHandle(WritePipeHandle);
    Merci mille fois de prendre le temps de me relire.

  7. #7
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    Que est le code de retour de CreateProcess.
    autre question pour quoi utilise tu un "." dans ton appel
    je ne vois pas la nécessité de le faire
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    Merci de ta réponse.
    Le "." est un reste de commande batch pour spécifier que la racine est le répertoire courant. Pareillement utile pour un ShellExecute.
    J'obtiens un "Erreur code 3. Le chemin d'accès spécifié est introuvable".

  9. #9
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    je pense que l'erreur provient de ce"."
    fait un essai sans cela devrait fonctionner
    c'est sous linux que le "." est important pas sous l'environnement windows
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  10. #10
    Membre à l'essai
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    Ben non, nécessaire aussi pour Windows. Sinon j'ai aussi essayé une modif de ton code pour l'insérer dans un évènement du bouton :
    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
    void __fastcall TInterfaceS2A::Button1Click(TObject *Sender)
    {
      unsigned long ProcessResult;
      STARTUPINFO si;
      PROCESS_INFORMATION  pi;
      ZeroMemory(&si,sizeof(si));
      si.cb=sizeof(si);
      bool result=CreateProcess("F:\\ZZZzzz\\s2a\\Python\\python.exe", "F:\\ZZZzzz\\s2a\\s2a.py COM13",
    							NULL,
    							NULL,
    							false,
    							DETACHED_PROCESS,
    							NULL,
    							NULL,
    							&si,
    							&pi);
       while (ProcessResult==STILL_ACTIVE)
       {
    	Sleep(50);
        Application->ProcessMessages();
        GetExitCodeProcess(pi.hProcess,
    					   &ProcessResult);
       }
     
       CloseHandle(pi.hThread);
       CloseHandle(pi.hProcess);
    }
    Mais là il ne se passe rien....
    Merci de ton aide.

  11. #11
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    ton code modifié est faux
    tu dois coder de la manière suivante

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    bool __fastcall TInterfaceS2A::CreateAndWaitUntilTerminated(char * PrgName, char* ParamList, long* Errorcode)
    {
      unsigned longProcessResult;
      STARTUPINFO si;
      PROCESS_INFORMATION  pi;
      ZeroMemory(&si,sizeof(si));
      si.cb=sizeof(si);
      bool result=CreateProcess(PrgName,
                                ParamList,
                                NULL,
                                NULL,
                                false,
                                DETACHED_PROCESS,
                                NULL,
                                NULL,
                                &si,
                                &pi);
     if(!result)
      {
        *Errorcode=GetLastError();
        return false;
      }
      do
       {
        Sleep(50);
        Application->ProcessMessages();
        GetExitCodeProcess(pi.hProcess,
                           &ProcessResult);
       }
       while (ProcessResult==STILL_ACTIVE);
       CloseHandle(pi.hThread);
       CloseHandle(pi.hProcess);
       *Errorcode=ProcessResult;
       return true;
     
     
            //TODO: Add your source code here
    }
     
     
    void __fastcall TInterfaceS2A::Button1Click(TObject *Sender)
    {
    long ErrocCode=0;
    bool Resultat=false;
    Resultat=CreateAndWaitUntilTerminated("F:\\ZZZzzz\\s2a\\Python\\python.exe", "F:\\ZZZzzz\\s2a\\s2a.py COM13",&ErrocCode);
     
    Edit1->Text=IntToStr(ErrocCode);// pour tester le code d'erreur // A Ajouter dans ta form
     
     
    }
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  12. #12
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    j'ai trouvé le problème et il suffit de paramétrer différemment CreateProcess pour utiliser l'appel d'une application avec des paramètres
    ci-dessous un exemple
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    {
      	SECURITY_ATTRIBUTES sa;
    	ZeroMemory(&sa, sizeof(SECURITY_ATTRIBUTES));
    	sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    	sa.bInheritHandle = true;
    	sa.lpSecurityDescriptor = NULL;
    	HANDLE ReadPipeHandle;
    	HANDLE WritePipeHandle; // not used here
    	if (!CreatePipe(&ReadPipeHandle, &WritePipeHandle, &sa, 0))
    		RaiseLastOSError();
     
    	// Create a Console
    	STARTUPINFO si;
    	ZeroMemory(&si, sizeof(STARTUPINFO));
    	si.cb = sizeof(STARTUPINFO);
    	si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    	si.wShowWindow = SW_HIDE;
    	si.hStdOutput = WritePipeHandle;
    	si.hStdError = WritePipeHandle;
     
    	PROCESS_INFORMATION pi;
    	ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
    	if (!CreateProcess(NULL,
    			"H:\\Python34\\python.exe H:\\Python34\\Tools\\Scripts\\diff.py",
    			NULL, NULL, true, 0, NULL, NULL, &si, &pi))
    		RaiseLastOSError();
     
    	// Read from pipe
    	char Data[1024];
    	for (; ; ) {
    		DWORD BytesRead;
    		DWORD TotalBytes;
    		DWORD BytesLeft;
     
    		// Check for the presence of data in the pipe
    		if (!PeekNamedPipe(ReadPipeHandle, Data, sizeof(Data), &BytesRead,
    				&TotalBytes, &BytesLeft))
    			RaiseLastOSError();
    		// If there is bytes, read them
    		if (BytesRead) {
    			if (!ReadFile(ReadPipeHandle, Data, sizeof(Data) - 1, &BytesRead,
    					NULL))
    				RaiseLastOSError();
    			Data[BytesRead] = '\0';
    			Memo1->Lines->Add(AnsiString(Data));
     
    		}
    		else {
    			// Is the console app terminated?
    			if (WaitForSingleObject(pi.hProcess, 0) == WAIT_OBJECT_0)
    				break;
     
    		}
    	}
    	CloseHandle(pi.hThread);
    	CloseHandle(pi.hProcess);
    	CloseHandle(ReadPipeHandle);
    	CloseHandle(WritePipeHandle);
    }
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  13. #13
    Membre à l'essai
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par DjmSoftware Voir le message
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    bool __fastcall TInterfaceS2A::CreateAndWaitUntilTerminated(char * PrgName, char* ParamList, long* Errorcode)
    {
      unsigned longProcessResult;
      STARTUPINFO si;
      PROCESS_INFORMATION  pi;
      ZeroMemory(&si,sizeof(si));
      si.cb=sizeof(si);
      bool result=CreateProcess(PrgName,
                                ParamList,
                                NULL,
                                NULL,
                                false,
                                DETACHED_PROCESS,
                                NULL,
                                NULL,
                                &si,
                                &pi);
     if(!result)
      {
        *Errorcode=GetLastError();
        return false;
      }
      do
       {
        Sleep(50);
        Application->ProcessMessages();
        GetExitCodeProcess(pi.hProcess,
                           &ProcessResult);
       }
       while (ProcessResult==STILL_ACTIVE);
       CloseHandle(pi.hThread);
       CloseHandle(pi.hProcess);
       *Errorcode=ProcessResult;
       return true;
     
     
            //TODO: Add your source code here
    }
     
     
    void __fastcall TInterfaceS2A::Button1Click(TObject *Sender)
    {
    long ErrocCode=0;
    bool Resultat=false;
    Resultat=CreateAndWaitUntilTerminated("F:\\ZZZzzz\\s2a\\Python\\python.exe", "F:\\ZZZzzz\\s2a\\s2a.py COM13",&ErrocCode);
     
    Edit1->Text=IntToStr(ErrocCode);// pour tester le code d'erreur // A Ajouter dans ta form
    }
    J'ai donc utilisé ce code là mais il ne se passe rien, et j'ai un code d'erreur 2. Une idée de ce que ça peut etre ?

    Entre tes 2 posts, l'appel à CreateProcess n'est pas le même, lequel garder ? Je ne maîtrise pas du tout cette fonction...

    La méthode trouvée ici (http://cpp.developpez.com/faq/vc?pag...onsole-Windows) n'est pas la même du tout...voire même sinon j'utilise un ShellExecute que je log et dont j'affiche le log dans mon Memo ?

    Merci de me dépanner.

  14. #14
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    Utilisé le dernier code que j'ai posté je l'ai testé avec le script que j'appelle avec create process et le résultat est correctement affiche dans un.composant Tmemo
    Cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  15. #15
    Membre à l'essai
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup ! Du coup là j'arrive à lire les logs d'erreur
    J'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Traceback (most recent call last):
      File "K:\s2a\s2a\s2a.py", line 31, in <module>
        from scratch_command_handlers import ScratchCommandHandlers
      File "K:\s2a\s2a\scratch_command_handlers.py", line 32, in <module>
        class ScratchCommandHandlers:
      File "K:\s2a\s2a\scratch_command_handlers.py", line 45, in ScratchCommandHandlers
        ln_languages = config.get('translation_lists', 'ln_languages').split(',')
      File "K:\s2a\s2a\Python\lib\ConfigParser.py", line 607, in get
        raise NoSectionError(section)
    ConfigParser.NoSectionError: No section: 'translation_lists'
    Ca doit venir de mon script Python ?

  16. #16
    Membre à l'essai
    Inscrit en
    Mai 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 32
    Points : 10
    Points
    10
    Par défaut
    Merci !
    J'ai avancé, merci car ton exemple fonctionne avec différents appels à des exécutables. Maintenant j'essaie de mettre ça dans un thread à part....et encore une fois je galère....
    Par contre pour le python, impossible de le faire rentrer là dedans !

    Zou j'y retourne.

Discussions similaires

  1. [Langage/Algorithme] Récupérer le retour d'une commande MS-DOS dans une variable sous C++ Builder XE2
    Par Mercusyo dans le forum C++Builder
    Réponses: 7
    Dernier message: 21/03/2012, 09h41
  2. [Débutant] Borland C++ Builder : Portée du this, fonctions dans un formulaire, et espions
    Par otacon ghost dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/07/2011, 15h32
  3. [IDE] Manipulation de Date dans MysQl avec Borland C++ Builder 6
    Par KONAMIM dans le forum C++Builder
    Réponses: 3
    Dernier message: 08/03/2011, 21h20
  4. Réponses: 5
    Dernier message: 28/02/2006, 15h12
  5. Installer Synedit dans Borland C++ builder
    Par oliviereims dans le forum C++Builder
    Réponses: 19
    Dernier message: 24/02/2005, 19h38

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