Pb gestion console sous Win32

ophelium -  
 ophelium -
Bonjour,

j'ai développé une simple appli win32 afin de vérifier la gestion des consoles sous windows:

1) je fais un AllocConsole()
2) je définis ensuite
HANDLE in = GetStdHandle(STD_INPUT_HANDLE);
HANDLE ou = GetStdHandle(STD_OUTPUT_HANDLE);
3) je fais un WriteFile(...) vers ou (stdout) => OK ca marche
4) j'essaye un WriteFile(...) vers in (stdin) avec comme buffer "telnet xxx.xxx.xxx.xxx" et là rien ne se passe (je m'attendais à avoir un retour sur stdout du résultat)

=> qui pourrait me fournir une explication svp? [j'ai utilisé WriteConsoleInput(...) et le résultat est le même => rien; idem pour une commande plus simple que le telnet tel que 'HELP' ou 'DIR']

merci d'avance de votre aide précieuse!
A voir également:

2 réponses

Mahmah Messages postés 497 Statut Membre 125
 
Salutations,

Je dois avouer que je ne connais pas ces fonctions mais en toute logique, une fois des données écrites dans in il devient possible de les lire. (via fscanf ou fgets peut-être ?) A mon avis, écrire dans le buffer d'entrée simule simplement une saisie au clavier, tant que ton programme ne lit rien il n'y a aucune raison de se passer quoique ce soit.

D'autre part je ne vois pas pourquoi il devrait tenter exécuter la chaîne de caractères données. Il le fait avec out ?
(Curiosité personnelle)

M.
0
Ophelium
 
Le but du jeu est de recupérer sur stdout le résultat d'une commande placée dans stdin (avec ReadFile(...) ou ReadConsoleOutput(...)).

A priori ca devrait marcher (une console c'est qd même un interpréteur de commande ?? non ??).

Quand je crée une appli console win32 cette fois ci (pas besoin d'AllocConsole)
1) je recupere in et ou comme précedement
2) je fais un WriteConsoleInput(...) avec comme buffer "telnet xxx.xxx.xxx.xxx"

=>qd le main(...) se termine et bien hop j'ai ma commande telnet qui est prise en compte et s'execute!

pourquoi se comportement?? de l'aide svp
0
ophelium
 
Bonjour,

Pb résolu!

la gestion de process sous windows est vraiment compliquée et merd.... !!!!

à coup de CreateProcess, de CreateNamedPipe, de WriteConsoleInput, de ReadConsoleOutput et de handle par ci et handle par là et de dll hook (pour s'attacher au process fils) on y arrive....ouf
0