[R] Lecture de la sortie standard d'un programme

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
keltharak
Niveau 3
Niveau 3
Messages : 40
Enregistré le : lun. 12 janv. 2009 16:35
Status : Hors ligne

[R] Lecture de la sortie standard d'un programme

#1

Message par keltharak »

Bonjour,

J'aimerai lire la sortie standard d'un programme que je n'ai pas lancé depuis mon script autoit mais à priori il faut forcement avoir lancé le programme par un Run pour avoir "la main" sur la sortie d'un programme avec StdoutRead().
Pour donner un petit exemple, je fais pour l'instant :
► Afficher le texte
Mais évidement ça ne retourne rien du tout.

Merci d'avance.
Modifié en dernier par keltharak le mar. 15 sept. 2009 09:47, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture de la sortie standard d'un programme

#2

Message par Tlem »

En effectuant quelques recherches sur des messages récents comme http://www.autoitscript.fr/forum/viewto ... f=3&t=3661, vous trouverez sans doute votre bonheur.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
keltharak
Niveau 3
Niveau 3
Messages : 40
Enregistré le : lun. 12 janv. 2009 16:35
Status : Hors ligne

Re: [..] Lecture de la sortie standard d'un programme

#3

Message par keltharak »

Merci pour l'aiguillage mais je ne suis pas tout à fait dans le même cas car je ne lance pas le programme à "lire" dans mon script. Le programme que j'ai appelé monProcess.exe est un processus qui tourne sur ma machine sans interaction avec mon script, j'aimerai juste savoir ou il en est.
Or dans l'es exemples donnés le programme sont lancé par un Run en redirigeant les sorties sur le script parent, ou alors je n'ai rien compris, ça reste dans le domaine du possible...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture de la sortie standard d'un programme

#4

Message par Tlem »

Hummmm j'avoue avoir du mal à comprendre votre demande.
Dans votre premier message, vous dites :
J'aimerai lire la sortie standard d'un programme
Pour moi, cela veut dire que vous voulez lire les informations retournées dans la console ou similaire par le programme.
Mais ça, vous ne pouvez le faire que si vous avez lancé le programme et que vous contrôlez son PID.

Dans votre deuxième message, vous dites :
j'aimerai juste savoir ou il en est
Mais, ou il en est de quoi !!!!
Si vous ne lancez pas le programme; si il n'y à pas d'affichage ou de trace de sont état, comment voulez-vous connaitre quoi que ce soit ?
Donnez-nous plus d'éléments, pour pouvoir peut-être vous répondre.

Sinon, si vous avez le nom du processus, il est peut être possible de récupérer sont handle puis sont PID et à partir de là, lire la 'sortie standard', mais là c'est une autre histoire ...
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
keltharak
Niveau 3
Niveau 3
Messages : 40
Enregistré le : lun. 12 janv. 2009 16:35
Status : Hors ligne

Re: [..] Lecture de la sortie standard d'un programme

#5

Message par keltharak »

Bonjour,

Effectivement je n'ai pas été très clair, mais je découvre cette fonctionnalité des entrée/sortie standard et ce n'est pas trop évident encore pour moi.

J'ai donc un programme qui tourne sur ma machine et qui renvoi des informations sur son avancement sur sa sortie standard. Mon script au3, complètement indépendant de ce programme (l'un ne lance pas l'autre quoi), essai de lire cette sortie standard pour connaitre l'état d'avancement de ce programme.

Par la partie de récupération du PID, je l'ai déjà :

Code : Tout sélectionner

$myProcesses = ProcessList("monProcess.exe")
$myPid = $myProcesses[1][1]
Au final je suis exactement dans le dernier cas que vous me décrivez :
Sinon, si vous avez le nom du processus, il est peut être possible de récupérer sont handle puis sont PID et à partir de là, lire la 'sortie standard', mais là c'est une autre histoire ...
Si je comprend bien, il me manquerai l'étape "récupérer handle de mon programme" puisque lire la sortie standard revient juste a faire un "$read = stdoutread($myPid)" non ?

Merci encore de vous pencher sur ce cas. :D
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Lecture de la sortie standard d'un programme

#6

Message par Tlem »

Il semble que pour lire la sortie standard d'un programme avec StdOutRead, il faut impérativement que celui-ci soit lancé par votre script afin de devenir un processus enfant.

Donc à première vue, pas de solution dans ce sens.

Cela dit, si votre programme retourne des informations par la sortie standard, alors re-dirigez ces informations vers un fichiers qui sera analysé par votre script.
Ou encore, re-dirigez les infos vers un script qui traitera les données.

Code : Tout sélectionner

MonProgramme.exe > Resultat.log
Ou :
MonProgramme.exe > MonScript.exe
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
keltharak
Niveau 3
Niveau 3
Messages : 40
Enregistré le : lun. 12 janv. 2009 16:35
Status : Hors ligne

Re: [..] Lecture de la sortie standard d'un programme

#7

Message par keltharak »

Merci pour ces précisions, je vais voir si je peux me débrouiller en redirigeant la sortie vers un fichier, je n'y avais pas penser mais pourquoi pas, je vais voir ce que je peux en faire.
Répondre