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 :

Récupérer le code de sortie d'un exe lancé avec ShellExecuteEx


Sujet :

C++Builder

  1. #1
    Membre régulier Avatar de benj63
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 207
    Points : 99
    Points
    99
    Par défaut Récupérer le code de sortie d'un exe lancé avec ShellExecuteEx
    Bonjour,

    Je lance un exécutable avec un ensemble de paramètres grâce à la fonction ShellExecuteEx :

    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
    ZeroMemory(&shInfo,sizeof(shInfo));
    shInfo.cbSize=sizeof(shInfo);
    shInfo.hwnd=NULL;
    shInfo.fMask=SEE_MASK_NOCLOSEPROCESS;
    shInfo.lpVerb=NULL;
    shInfo.lpFile="C:\\unrep\\programme.exe";
    shInfo.lpParameters="param1 param2 param3";
    shInfo.lpDirectory="C:\\unrep\\";
    shInfo.nShow = SW_HIDE;
    shRetour = ShellExecuteEx(&shInfo);
    if(shRetour)
    {
       while(WaitForSingleObject(shInfos[s].hProcess,500)!=WAIT_TIMEOUT)
          Sleep(100);
       // le processus s'est arrêté, comment récupérer son code de sortie ?
    }
    Comment faire pour récupérer le code de sortie de l'exécutable lancé ?

    Merci !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Salut

    ERRORLEVEL ou GetExitCodeProcess ?


    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
    61
    62
    63
    64
    65
     
     
    http://stackoverflow.com/questions/334879/how-do-i-get-the-application-exit-code-from-a-windows-command-line
     
    #include "stdio.h"
    #include "tchar.h"
    #include "stdio.h"
    #include "shellapi.h"
    int _tmain( int argc, TCHAR *argv[] )
    {
     
        CString cmdline(GetCommandLineW());
        cmdline.TrimLeft('\"');
        CString self(argv[0]);
        self.Trim('\"');
        CString args = cmdline.Mid(self.GetLength()+1);
        args.TrimLeft(_T("\" "));
        printf("Arguments passed: '%ws'\n",args);
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
     
        ZeroMemory( &si, sizeof(si) );
        si.cb = sizeof(si);
        ZeroMemory( &pi, sizeof(pi) );
     
        if( argc < 2 )
        {
            printf("Usage: %s arg1,arg2....\n", argv[0]);
            return -1;
        }
     
        CString strCmd(args);
        // Start the child process. 
        if( !CreateProcess( NULL,   // No module name (use command line)
            (LPTSTR)(strCmd.GetString()),        // Command line
            NULL,           // Process handle not inheritable
            NULL,           // Thread handle not inheritable
            FALSE,          // Set handle inheritance to FALSE
            0,              // No creation flags
            NULL,           // Use parent's environment block
            NULL,           // Use parent's starting directory 
            &si,            // Pointer to STARTUPINFO structure
            &pi )           // Pointer to PROCESS_INFORMATION structure
        ) 
        {
            printf( "CreateProcess failed (%d)\n", GetLastError() );
            return GetLastError();
        }
        else
            printf( "Waiting for \"%ws\" to exit.....\n", strCmd );
     
        // Wait until child process exits.
        WaitForSingleObject( pi.hProcess, INFINITE );
        int result = -1;
        if(!GetExitCodeProcess(pi.hProcess,(LPDWORD)&result))
        { 
            printf("GetExitCodeProcess() failed (%d)\n", GetLastError() );
        }
        else
            printf("The exit code for '%ws' is %d\n",(LPTSTR)(strCmd.GetString()), result );
        // Close process and thread handles. 
        CloseHandle( pi.hProcess );
        CloseHandle( pi.hThread );
        return result;
    }

  3. #3
    Membre régulier Avatar de benj63
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 207
    Points : 99
    Points
    99
    Par défaut
    Merci, c'est exactement ce dont j'avais besoin !

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

Discussions similaires

  1. Récupérer le code de sortie
    Par Ti-EN dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 19/08/2014, 23h05
  2. Comment récupérer le code de sortie d'un service ?
    Par CleM_71 dans le forum Windows
    Réponses: 12
    Dernier message: 15/01/2009, 15h49
  3. Réponses: 7
    Dernier message: 13/03/2008, 13h03
  4. récupérer le code de sortie d'un programme dans un c shell
    Par awalter1 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 17/01/2008, 15h17
  5. [2.0]Récupérer un code retour d'un exe.
    Par MoscoBlade dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/04/2007, 16h50

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