CAPTURE DU TEXTE D'UN PROGRAMME DOS PAR UN PIPE ...

Signaler
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
cliquetde8
Messages postés
52
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
29 avril 2015
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/6395-capture-du-texte-d-un-programme-dos-par-un-pipe

cliquetde8
Messages postés
52
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
29 avril 2015

Hum question bête, comment ouvrir le projet ?
Flocreate
Messages postés
307
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
27 mai 2012
3
Non mon programme ne prends aucun paramètres.

J'ai fait un autre programme qui a les memes symptomes pour que des personnes puissent tester ;)

Prog en C (compilé abvec DMC)
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(int argc, char* argv[])
{
char c = 0;
while (c != 's')
{
c = _getch();

if (c == 's')
printf("Fin du programme.\n");
else
printf("Asc(c)=%d\n",c, (int)c);
}
return 0;
}
Fait Freezer MyDos.exe (killer le process dans le gestionnair des taches permet de sortir du freez)

Alors qu'un bête hello-world (avec un printf) s'affiche parfaitement dans MyDos.exe (même avec un while(1)printf("Try to catch me !!!");

cela valide la thèse du problème bloquant sur le stdInput mais je ne parviens pas a comprendre comment le corriger ...
cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
64
Désolé, je n'ai pas trop le temps de me replonger dans ce code, mais, si tu dois envoyer des commandes au démarrage, connais-tu ctte syntaxe purement batch :
C:\Tralala.exe <Commandes.txt
où Commandes.txt contient toutes les lignes envoyées au programme, par exemple, une ligne vide pour un Enter.
Seul bémol : ces commandes doivent être connues d'avances.
Flocreate
Messages postés
307
Date d'inscription
lundi 17 juillet 2006
Statut
Membre
Dernière intervention
27 mai 2012
3
pour poursuivre ma réflexion :
je crée un fichier batch "lancement.bat"
il contient:
PAUSE
PAUSE
PAUSE
EXIT

je lance MyDos.exe
je fait lancer un exe -> lancement.bat

le résultat est :
d:\Documents and Settings\ab84785\Bureau\from VBFRANCE>pause
Appuyez sur une touche pour continuer...

d:\Documents and Settings\ab84785\Bureau\from VBFRANCE>pause
Appuyez sur une touche pour continuer...

d:\Documents and Settings\ab84785\Bureau\from VBFRANCE>pause
Appuyez sur une touche pour continuer...

d:\Documents and Settings\ab84785\Bureau\from VBFRANCE>exit

ceci confirme donc le fait que le stdInput reçoit des choses que je ne maitrise pas ...
(et il se trouve que mon exe que à l'origine je souhaite catcher est assez sensible aux entrées)
j'ai tenté de corriger ce problème avec la création d'un nouveau pipe createpipe(hPL, hPE)
avant le createprocess je met le start.stdInput = hPL
apres le createprocess je fait closehandle hPL

et le résultat :
positif = c'est que en effet le premier pause reste bloqué
négatif = ma form est bloquée également ;)

Aurriez vous une idée a ce propos ?