Surveiller un procéssus (lancé par "shell") [Résolu]

Messages postés
17
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
8 septembre 2010
- - Dernière réponse : Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
- 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
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
53
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
53
0
Merci
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
Commenter la réponse de Renfield
Messages postés
17
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
8 septembre 2010
0
Merci
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
Commenter la réponse de chrismargab
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
53
0
Merci
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
Commenter la réponse de Renfield
Messages postés
17
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
8 septembre 2010
0
Merci
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.
Commenter la réponse de chrismargab