Surveiller un procéssus (lancé par "shell")

Résolu
chrismargab Messages postés 17 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 8 septembre 2010 - 6 sept. 2010 à 22:43
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 7 sept. 2010 à 20:58
Bonjour,

J'utilise la commande "shell" pour lancer un utilitaire qui me convertit un fichier en fichier txt. Tout va bien, mais pour les longs fichiers, j'aimerai connaitre l'avancement du processus, en affichant à intervalle régulier la taille du fichier txt écrit.
Mon application attends que le processus soit fini pour continuer son exécution, et c'est là mon problème.
Comment puis je procéder pour faire lire la taille du fichier txt pendant l'exécution de mon utilitaire lancé par la commande "shell" ?

Merci d'avance.

Christian

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 sept. 2010 à 20:58
fache ? non ^^ ce serait mal me connaitre.

la seule raison pour laquelle Shell ne rend pas la main est que le soft lance (ton convertisseur) bloque le processeur...

comme quand en VB on ne met pas de DoEvents dans certaines boucles critiques

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 sept. 2010 à 14:47
Shell renvoie le ProcessID

OpenProcess te permettra de récupérer un Process Handle et d'attendre (WaitForSingleObject) la fin de celui-ci (n'oublies pas de mettre un CloseHandle)

tu peux aussi passer par CreateProcess plutot que Shell et rediriger ainsi la Standard Output vers un Pipe qu'il te suffira de questionner pour obtenir sous la forme d'un String le texte éventuellement affiché dans la fenêtre console de ton convertisseur ; et qui contient peut etre - a toi de voir - le % de progression de la tache.



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
chrismargab Messages postés 17 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 8 septembre 2010
7 sept. 2010 à 17:17
Merci, mais ça ne convient pas à ce que je cherche.
Le logiciel que je lance s'appelle hyperfile2xml.exe. Il se lance par la commande "exécuter" et fonctionne en tâche de fond, sans rien afficher à l'écran. C'est pour ça que je pensais chercher à lire la taille du fichier créé par ce logiciel pendant son exécution.
Ce qui est bizarre, c'est que la commande shell bloque le déroulement de mon application VB6 tant que le logiciel appelé n'a pas fini sa tâche.

Christian
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 sept. 2010 à 19:08
en quoi cela ne ton convient pas ?
Shell ne devrai pas bloquer ton appli...

je t'ai file deux voies a suivre...
ce que tu as demande, a savoir attendre que Shell finisse

je t'ai aussi file une methode pour lire la console, ce qui ne s'avere pas utile, dans ton cas.


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chrismargab Messages postés 17 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 8 septembre 2010
7 sept. 2010 à 19:41
Ne te fâche pas...

Justement, je vois que beaucoup de gens demande une astuce pour que l'appli attende que shell finisse pour continuer.
Moi, je ne veux pas que l'appli attende, et pourtant, c'est ce qu'elle fait ! Et je n'utilise que la commande shell, sans rien autour !
Mais bon, je crois que je vais faire autrement.
Plus d'un million huit cent mille lignes à traiter, ça prend du temps, alors je vais essayer de lire le fichier windev afin d'avoir moins de ligne à traiter.

Merci quand même.
0
Rejoignez-nous