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] Attendre l'arrêt d'un processus !!


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [RESOLU][MFC] Attendre l'arrêt d'un processus !!
    Bonjour,

    Je voudrais savoir quelle fonction utilisée pour attendre la fin d'exécution
    d'un processus, en scrutant soit son ID soit son HANDLE.
    Il y a WaitForSingleObject mais elle ne prend en argument que l'HANDLE.
    Or je ne sais pas récupérer le HANDLE du processus que je veux voir s'arrêter. Je n'ai que son ID.

    MERCI

  2. #2
    Membre régulier

    Inscrit en
    Décembre 2002
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 60
    Points : 105
    Points
    105
    Par défaut
    Le handle requis n'est pas celui du thread, mais celui d'un event. Les events sont utilises justement pour synchroniser les threads.

  3. #3
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Comment as tu crée le processus dont tu souhaites attendre la fin ?

    Tu ne peux attendre la fin d'un process avec WaitForSingleObject que si tu as crée le process toi même et de préférence avec l'api CreateProcess.
    (http://msdn.microsoft.com/library/de...ateprocess.asp)
    PS : Si c'est avec CreateProcess alors il t'a retourné une variable ou il y a le handle du processus.

  4. #4
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par Elrond
    Le handle requis n'est pas celui du thread, mais celui d'un event. Les events sont utilises justement pour synchroniser les threads.
    Avec WaitforSingleObject, il me semble que tu peux aussi attendre la fin d'un process en lui passant son handle. Pareil pour un thread. Tu peux aussi attendre des events, sémaphores et autres mutex

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Comme ma question déchaine les passions, je vais décrire un peu plus profondément ce que je veux faire.

    En fait, je crée ma mise à jour automatique. Quand l'utilisateur lance le programme que j'ai dévéloppé (MonProg), celui ci va tester si n'y a pas une version plus récente du logiciel sur le réseau. Une dernière version que j'aurai mis à jour. Ce teste est fait à chaque démarrage MonProg.

    Si le teste indique qu'il y a une version plus récente disponible alors on lance la mise à jour.
    C'est à dire que MonProg va lancer un process MiseAJour avec CreateProcess qui va faire la mise à jour. MiseAJour attend que MonProg s'arrête pour remplacer mon ancien MonProg par le nouveau.
    Là j'en viens enfin à ma question lorsque que j'attends avec MiseAJour l'arrêt de MonProg j'attends quel genre d'évènements?
    Disparition de ID process ou disparition du handle de MonProg ou autre chose.


    Il y a peut être des fonctions windows qui peuvent me dire si une application de tel ou tel nom est en cours d'exécution ou n'existe....

    Déchainé vous...

  6. #6
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    OK ..
    Arrange toi pour passer au prog MiseàJour l'ID du process MonProg (que tu peux avoir avec GetProcessID).

    Ensuite dans le code de MiseAjour, utilse La fonction OpenProcess (http://msdn.microsoft.com/library/de...penprocess.asp) en lui passant l'ID de MOnProg. Elle te renvoie le handle du process MonProg.

    Tu n'as + qu'à faire un WaitForSingleObject sur le Handle ainsi retourné ...

    Voilà, Voilou ....
    @+

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci abelman

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

Discussions similaires

  1. Attendre la fin d'un processus en C++
    Par ToMs dans le forum Linux
    Réponses: 3
    Dernier message: 10/07/2006, 08h58
  2. [MFC] attendre fin de demarrage d'un processus
    Par pitch21 dans le forum MFC
    Réponses: 16
    Dernier message: 14/10/2004, 09h35
  3. Attendre la fin d'un processus
    Par biaggi dans le forum ASP
    Réponses: 3
    Dernier message: 27/07/2004, 08h39
  4. attendre la fin d'un processus
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 27/02/2004, 15h37
  5. Comment Attendre la fin d'un Processus
    Par mr_titi dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/06/2003, 16h35

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