Si le processus que vous créez génère une sortie textuelle vers la sortie standard, vous pouvez probablement analyser cette sortie et afficher la progression. Pour savoir si c'est le cas, activez-le dans une fenêtre de ligne de commande et regardez ce que vous en obtenez. Le CreateProcess()
de win32 vous permet de rediriger la sortie standard du processus vers un tube. De cette façon, vous pouvez recevoir la sortie dès qu'elle est produite.
Si le processus que vous créez ne signale pas sa progression d'une façon ou d'une autre, alors vous ne pouvez pas vraiment faire grand-chose. Vous pouvez essayer de trouver une fonction entre la taille du fichier et le temps moyen nécessaire pour l'extraire, puis fausser une barre de progression. Cela servira à mettre l'esprit de l'utilisateur à l'aise, mais rien de plus.
- Modifier
L'appel à CreateProcess()
retours dès que le processus est créé. CreateProcess()
remplit la structure PROCESS_INFORMATION
avec les poignées du processus qu'il crée. il contient le handle du thread principal du processus. Si vous voulez attendre que le processus se termine, vous pouvez WaitForSingleEvent()
sur ce handle de thread qui est signalé lorsque le thread se termine. Ne pas oublier de CloseHandle()
ces poignées lorsque vous avez terminé avec eux.
D'accord, merci. Juste une question de plus, savez-vous comment empêcher la barre de progression de s'arrêter après l'exécution de la fonction CreateProcess()? Il verrouille mon processus (ce qui est quelque chose que je voudrais, parce que je veux supprimer le EXE exécuté après qu'il se termine). – frbry
Voir édition. Un moyen commun d'exprimer des remerciements dans ce site est d'upvote la réponse et peut-être même l'accepter. – shoosh