begin process at 2010 02 10 11:41:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > ATTENDRE LA FIN DE L'EXÉCUTION D'UN EXE.

ATTENDRE LA FIN DE L'EXÉCUTION D'UN EXE.


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Niveau :Initié Date de création :29/05/2004 Vu :5 231

Auteur : MadLucas

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Voici comment attendre qu'un EXE lancé avec ShellExecuteEx se termine avant de poursuivre l'exécution du code.

Source

  • // Exécute apperçu des images Windows
  • string parameters = "\\shimgvw.dll,ImageView_Fullscreen ";
  • string rundll32 = "\\rundll32.exe";
  • string myImg = "c:\\test.bmp"; //Changez cette valeur pour l'image que vous voulez afficher
  • GetSystemDirectory((BSTR) buf1, MAX_PATH);
  • rundll32 = buf1 + rundll32;
  • //--- ici, l'image à afficher est "TEST.BMP" dans le répertoire C:parameters = buf1 + parameters + myImg;
  • SHELLEXECUTEINFO execinfo;
  • memset(&execinfo, 0, sizeof(execinfo));
  • execinfo.lpFile = rundll32.c_str();
  • execinfo.cbSize = sizeof(execinfo);
  • execinfo.lpVerb = "open";
  • execinfo.fMask = SEE_MASK_NOCLOSEPROCESS;
  • execinfo.nShow = SW_SHOWDEFAULT;
  • execinfo.lpParameters = parameters.c_str();
  • ShellExecuteEx(&execinfo);
  • WaitForSingleObject(execinfo.hProcess, INFINITE);
  • //Vous pouvez mettre une nouvelle valeur à la place de INFINITE afin de configurer un "time-out" (millisecondes)
// Exécute apperçu des images Windows

string parameters = "\\shimgvw.dll,ImageView_Fullscreen ";
string rundll32 = "\\rundll32.exe";
string myImg = "c:\\test.bmp";                //Changez cette valeur pour l'image que vous voulez afficher

GetSystemDirectory((BSTR) buf1, MAX_PATH);
rundll32 = buf1 + rundll32;

//--- ici, l'image à afficher est "TEST.BMP" dans le répertoire C:parameters = buf1 + parameters + myImg;
	
SHELLEXECUTEINFO execinfo;
memset(&execinfo, 0, sizeof(execinfo));
execinfo.lpFile = rundll32.c_str();
execinfo.cbSize = sizeof(execinfo);
execinfo.lpVerb = "open";
execinfo.fMask = SEE_MASK_NOCLOSEPROCESS;
execinfo.nShow = SW_SHOWDEFAULT;
execinfo.lpParameters = parameters.c_str();
	
ShellExecuteEx(&execinfo);
WaitForSingleObject(execinfo.hProcess, INFINITE);

//Vous pouvez mettre une nouvelle valeur à la place de INFINITE afin de configurer un "time-out"  (millisecondes)

 Conclusion

Voilà.  C'est relativement simple.  ShellExecuteEx va fournir les infos à SHELLEXECUTEINFO execinfo...   Utilisez ensuite execinfo pour identifier le hProcess avec la fonction WaitForSingleObject.

Vous pouvez mettre ce code n'importe où dans un projet existant.  Lorsque "Apperçu des images Windows" est lancé avec le ShellExecuteEx, votre APP attendra que ce dernier se termine avant de continuer l'exécution de votre code.


 Sources de la même categorie

GESTIONNAIRE DE BIBLIOTHEQUE par eishtein
FICHIER ALBUM MUSICAL par imenouuuuuuuuuche
LOUISDU81 HTTP EDITOR par louisdu81
Source avec Zip Source avec une capture Source .NET (Dotnet) CLIENT IRC BASIQUE par king67
Source avec Zip CONVERTISSEUR NOMBRE ARABE => NOMBRE ROMAIN (1 À 4999) par Calli95

Commentaires et avis

Commentaire de LordBob le 29/05/2004 11:49:08

tres bonne source, car en plus elle m'a permit d'apprendre à me servir un peu mieux de ShellExecute !!!

Commentaire de djl le 29/05/2004 12:16:33

non, de ShellExecuteEx

Commentaire de LordBob le 29/05/2004 12:22:39

ouais, on s'en fou c'est parce que j'ai tapé trop vite :)

Commentaire de victorcoasne le 15/06/2004 13:03:38

Comment fait-on pour lancer simplement un programme (pas une image) attendre sa fin puis continuer ?

Commentaire de papillon2000 le 02/03/2009 23:24:49

moi aussi je cherche comment attendre la fin d'une tache pour lancer une autre.

Commentaire de victorcoasne le 03/03/2009 22:16:38

Tu liste les process et tu récupère le hProcess du processus que tu veux.
Puis tu fais un WaitForSingleObject(hProcess, INFINITE);

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales