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

MFC Discussion :

[MFC] Fin d'execution d'un prog lancé par mon appli


Sujet :

MFC

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 28
    Points : 17
    Points
    17
    Par défaut [Résolu][MFC] Fin d'execution d'un prog lancé par mon appli
    Bonjour a tous !

    J'ai un petit souci : j'ai une appli qui lance un autre exe. L'autre exe doit faire un traitement plus ou moin long (indéterminé/en fonction de l'utilisateur).
    Pendant le traitement de l'exe, mon appli doit toujours etre active, mais doit tenir informé l'utilisateur du déroulement de l'exe :
    tant que l'exe est toujours en traitement (donc executé), l'utilisateur doit le savoir, et quand l'exe s'est terminé, l'utilisateur doit le savoir.

    Donc, pour l'executer, je doit avoir une fonction non bloquante (execl, spawn, ShellExecute), mais je doit pouvoir savoir s'il l'exe ainsi lancé est toujours actif.

    Pour info, avec ShellExecuteEx, j'ai un HANDLE sur l'appli lancée, mais je ne sais pas quoi faire avec ce HANDLE ... :
    J'ai testé GetHandleInformation(), mais il me dit toujours que mon handle est invalide meme si mon exe est encore actif...

    Pouvez-vous me donner une piste SVP ???

    Merci d'avance !

    [EDITION 1]
    Bon, apres quelques recherche, j'ai vue que ShellExecuteEx ne me met pas a jour mon Handle !!
    Sinon, j'ai trouvé :
    Y'a la fonction GetExitCodeProcess qui retourne STILL_ACTIVE si le process est toujours actif.
    Je poursuis sur le handle qui vient de ShellExecuteEx...
    @+ !

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    as-tu regardé dans la FAQ ?

    sinon, voici un exemple de ce qu'il faut faire
    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
    	SHELLEXECUTEINFO execinfo;
    	memset(&execinfo, 0, sizeof(execinfo));
     
    	execinfo.lpFile = "c:\\install.exe";
    	execinfo.cbSize = sizeof(execinfo);
    	execinfo.lpVerb = "open";
    	execinfo.fMask = SEE_MASK_NOCLOSEPROCESS;
    	execinfo.nShow = SW_SHOWDEFAULT;
    	execinfo.lpParameters = "";
     
    	if (!ShellExecuteEx(&execinfo))
    	{
    		LPVOID lpMsgBuf; 
    		FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), 0, (LPTSTR) &lpMsgBuf, 0, NULL); 
    		MessageBox(NULL,(LPCTSTR)lpMsgBuf,"",MB_ICONSTOP); 
    		LocalFree( lpMsgBuf );
    	}
    	WaitForSingleObject(execinfo.hProcess, INFINITE);
    	MessageBox(NULL,"Fini","",MB_ICONSTOP);

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Oui effectivement y'a quelque chose dans la faq, mais c'est pas tout a fait ce que je demande (a moin que j'ai pas tout compris...)

    Car dans l'exemple que tu donnes, je pense la fonction se termine quand le process lancé se termine.
    Or, j'aimerai bien continuer à faire mon boulo, et avoir un truc genre evenement, timer, autre...., qui me dise 'c'est fini !'
    C'est pour ca que j'ai présicé que ca doit etre non bloquant.

    je continue, et je vous dis si j'ai quelquechose

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    je vois, dans ce cas il te faut faire cette fonction dans un thread qui notifiera ton programme principal à la fin du thread

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 28
    Points : 17
    Points
    17
    Par défaut
    Bon, d'accord....

    Je vais faire comme ca alors, car j'avais deja eu l'idee, mais je voulais pas passer au thread juste pour ca.

    Mais bon, ca marche, je conserve l'idee. Merci pour la réactivité de ce forum!! !! !! !!

    @ Bientot !

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    L'idéal serait d'utiliser MsgWaitForMultipleObjects mais je sais pas comment intégrer ça en MFC (peut être dans le OnIdle() ?). Ca permet d'attendre à la fois pour un event et un message (dans la boucle des messages).

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/11/2013, 03h23
  2. Réponses: 9
    Dernier message: 18/06/2007, 01h25
  3. execution d'un prog avec des fichiers multi-class
    Par Ice-B dans le forum Général Java
    Réponses: 2
    Dernier message: 05/08/2004, 11h43
  4. [Path]prog lancé en PHP : pb de bibliothèques
    Par mellie dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 29/06/2004, 17h19
  5. [Process] Probleme d'execution d'un prog c dans un prog java
    Par Elmilouse dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 08/06/2004, 14h26

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