|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 14 ![]() |
Bonjour à tous,
Je bute sur un problème actuellement concernant le lancement d'un process externe via VB.net et le monitoring en direct de la sortie de l'application. J'essaie de lancer une application console (gdal_translate.exe) via mon application, et je voudrais avoir la progression du traitement qui est assez long en temps réel, sous forme de barre de progression. J'ai cherché un peu partout, j'ai trouvé des tutoriels ou exemples de codes mais aucun ne fait ce que je veux. Le problème vient du fait que la sortie de l'application est un peu spéciale: au lieu d'écrire une ligne à chaque étape, elle crée une ligne qui affiche le pourcentage, et qui s'incrémente: 0...10...20...30.. L'application ajoute des points puis les pourcentages à chaque dizaine, jusqu'à arrivé à 100. La redirection en temps réel est donc compliqué car il n'y a pas de nouvelle ligne créée à chaque étape. Comment faire ? |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() François Chef de projet NTIC Inscription : janvier 2007 Messages : 6 558 ![]() |
Bonjour
Je dirais que vues les particularités que tu décrits, c'est délicat . En effet, il est très facile de rediriger la sortie séquentielle console du proces exécuté (en mettant à true la propriété RedirectStandardOutput de la classe process et en lisant le stream StandardOutput) mais ici, le programme utilise probablement l'émulation terminale native VT100 (ou VT220 ?)de la console windows. Il faut donc a priori écrire un parser de séquence VT100 pour restituer juste l'information fournie à partir de la lecture du stream. Ne connaissant pas ce programme, je te donne ces infos sous toutes réserves. (si c'est un très vieux programme en 16 bits -ce qui est devenu rare, quand même - , il est même possible qu'il adresse la mémoire graphique de la console directement et là, il n'y a pas de solution, tout simplement). EDIT : à la réflexion, je ne suis même pas sur que la console actuelle expose l'émulation VT100 - c'était le cas en MSDOS, mais je ne sais pas si c'est toujours le cas.
__________________
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça... Une réponse vous a aidé ? utiliser le bouton "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel |
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : avril 2008 Messages : 14 ![]() |
Merci pour ces éléments de réponse, même si je ne vois pas du tout ce qu'est "l'émulation terminale native VT100" et comment écrire un parser.
Pour info, l'application que j'utilise est décrite ici: http://www.gdal.org/gdal_translate.html et utilise la librairie Gdal, open source. En fouillant le code source de Gdal, j'ai troué la fonction qui est chargée d'afficher la progression du traitement, en voici le code (C++): Code C++ :
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com