Attendre la fin d'un programme [Résolu]

Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008
- - Dernière réponse : sebastienmz
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008
- 11 janv. 2007 à 14:10
bonjour a toutes et a tous ¨!
j'aimerais faire une routine de code qui lance un exe et qui attend la fin ou l'arret du processuce que j'ai lancer dans ma routine .
comment faire?
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
3
Merci
Pas compris l'histoire de modal.


if(CreateProcess(0, szExe, 0, 0, 0, 0, 0, 0, &si, &pi))
{
  CloseHandle(pi.hThread);
  WaitForSingleObject(pi.hProcess, INFINITE);
  CloseHandle(pi.hProcess);
}
Ne suffit pas ?

ciao...
BruNews, MVP VC++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BruNews
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
17
0
Merci
Salut,
une solution (surement pas la meilleure) :







bool bModal = true;
TCHAR szExe[] = _T("notepad.exe unFichier.txt");

STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
ZeroMemory(&pi, sizeof(pi));
si.cb = sizeof(si);

// Demarre process notepad
if( CreateProcess(NULL, szExe, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi) )
{
   // Simule un comportement modal de notepad
   if( bModal )
   {
      WaitForSingleObject(pi.hProcess, INFINITE);


   }
   // Ou un comportement non modal
   else
   {     
      DWORD dwExit;
      MSG msg;
      while( true )
      {
         if( !GetExitCodeProcess(pi.hProcess, &dwExit) ) 
             break;
         if( dwExit == STILL_ACTIVE )
         {
             if( PeekMessage(&msg, hWnd, 0, 0, PM_REMOVE) )
             {
                 TranslateMessage(&msg);
                 DispatchMessage(&msg);
             }
         }
         elsebreak;
      } 
   }


  // Libère process
  CloseHandle(pi.hProcess);
  CloseHandle(pi.hThread);
}
Commenter la réponse de yann_lo_san
Messages postés
139
Date d'inscription
mardi 16 mai 2006
Statut
Membre
Dernière intervention
23 juin 2008
0
Merci
Merci a vous deux pour vos réponce MERCI et bonne année
Commenter la réponse de sebastienmz