Page 1 sur 1

[R] Récupérer le texte d'un programme DOS

Posté : mer. 10 sept. 2008 13:53
par Jismar
Bonjour à tous,

Mon script a pour but de lancer un vieux programme DOS en mode texte et réaliser des évènements clavier pour naviguer dans ce programme.

Je souhaite à un instant précis récupérer le contenu texte de ma fenêtre de commande DOS lancée (je suis sous XP). La fonction WinGetText, alors qu'elle cible bien ma fenêtre, ne renvoie qu'une chaîne vide.

Code : Tout sélectionner

Run("#######.exe");
Send("!t");
Send("g");
...
...
AutoItSetOption("WinTitleMatchMode", 2);
$text = WinGetText("#######.exe", "");
 
$text est une chaîne vide. J'ai testé le titre de la fenêtre, elle est convenablement ciblée.

Comment faire pour récupérer mon contenu ?

Merci

Re: [..] Récupérer le texte d'un programme DOS

Posté : mer. 10 sept. 2008 15:41
par jbnh
Tu peux lancer tes commande par autoit, et ainsi utiliser StdoutRead pour récupérer le contenu. Je te laisse comprendre avec l'exemple de la fonction:

Code : Tout sélectionner

#include <Constants.au3>

$foo = Run(@ComSpec & " /c dir foo.bar", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $line)
Wend
où dir foo.bar est la commande envoyée dans le cmd

Re: [..] Récupérer le texte d'un programme DOS

Posté : mer. 10 sept. 2008 16:20
par Jismar
Merci pour ta réponse.

Je comprends la logique.
Toutefois ça ne fonctionne pas (peut-être ai-je mal intégré cela), mais ça me semble logique. Mon application est une vieille application industrielle avec une succession d'écrans en mode texte : cela est différent de, par exemple, une commande dir ou ping, où l'on a bien un flux de sortie. Je doute que le STDOUT soit alimenté par ce texte.

Voici à quoi ça ressemble :

Code : Tout sélectionner

+------------------------------------------------------------------------------+
¦                                                                              ¦
¦                   Emission ## ######## #### ######### ######                 ¦
¦                                                                              ¦
¦ Nom du fichier sur la station - ######                                       ¦
¦                                                                              ¦
¦ Commande à émettre vers le système hôte                                      ¦
¦                                                                              ¦
¦                                                                              ¦
¦                                                                              ¦
¦                                                                              ¦
¦                                                                              ¦
¦                                                                              ¦
¦                                                                              ¦
¦  nombre de paquets :    11                                                   ¦
¦  nombre de réessais:    10                                                   ¦
¦                                                                              ¦
¦                                                                              ¦
¦                                                                              ¦
¦                                                                              ¦
¦Trop de réessais                                                              ¦
¦                                                                              ¦
¦ Abandon du transfert de fichier          Taper une touche pour continuer -   ¦
¦                                                                              ¦
+------------------------------------------------------------------------------+
 

Re: [..] Récupérer le texte d'un programme DOS

Posté : mer. 10 sept. 2008 16:47
par moutelous
Bonjour,
Jismar a écrit :e souhaite à un instant précis récupérer le contenu texte de ma fenêtre de commande DOS
Pourquoi ne pas faire à ce moment précis un "Modifier/Selectionner tout" puis Entrée (avec Autoit ou à la mano) à partir de la console, le contenu de votre fenêtre DOS sera dans le tampon ...à coller où vous voulez par la suite .... Il faut bien sûr que la console soit en mode d'édition rapide.

A+

Re: [..] Récupérer le texte d'un programme DOS

Posté : mer. 10 sept. 2008 17:05
par Jismar
Effectivement, c'est une possibilité !

Merci !