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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Jismar
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 10 sept. 2008 13:41
Status : Hors ligne

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

#1

Message 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
Modifié en dernier par Jismar le mer. 10 sept. 2008 17:05, modifié 1 fois.
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

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

#2

Message 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
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Jismar
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 10 sept. 2008 13:41
Status : Hors ligne

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

#3

Message 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 -   ¦
¦                                                                              ¦
+------------------------------------------------------------------------------+
 
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

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

#4

Message 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+
A+
Jismar
Niveau 1
Niveau 1
Messages : 7
Enregistré le : mer. 10 sept. 2008 13:41
Status : Hors ligne

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

#5

Message par Jismar »

Effectivement, c'est une possibilité !

Merci !
Répondre