Bonjour,
Dans le but d'effectuer un analyseur réseau je souhaiterais utiliser la commande native Run() d'AutoIT pour exécuter une commande Batch. Cependant, je ne sais pas du tout comment récupérer le retour de la commande (exemple : un simple ping). J'ai l'impression que c'est en rapport avec les STDIN/OUT. Est-ce possible ?
Sachant que c'est un analyseur réseau, je préfère utiliser Run() plutôt que RunWait(), est-ce que ça ne va pas poser problème ?
Flux STDIN/OUT ?
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- Barthandelus
- Niveau 4
- Messages : 53
- Enregistré le : mer. 02 janv. 2019 14:34
- Status : Hors ligne
Re: Flux STDIN/OUT ?
Bonjour,
Il y a des exemples dans la documentation, en voici un perso:
Il y a des exemples dans la documentation, en voici un perso:
#include <WinAPIConv.au3>
#include <AutoItConstants.au3>
Global $iPID, $sOEM, $sANSI, $sMsg
; Commande Dir sur le fichier du script
$iPID = Run(@ComSpec & " /c dir "& @ScriptFullPath, "", @SW_HIDE, $STDOUT_CHILD)
; Attend la fin du processus
ProcessWaitClose($iPID)
; Récupère le résultat de la commande Dir dans la variable $sOEM
$sOEM = StdoutRead($iPID)
; Convertit en ANSI
$sANSI = _WinAPI_OemToChar($sOEM)
; Affiche les deux codages
$sMsg = "Version OEM:--------------" & @crlf & $sOEM & @crlf
$sMsg &= "Version ANSI:--------------" & @crlf & $sANSI
MsgBox(0,"_WINApi_OEMToChar", $sMsg)
#include <AutoItConstants.au3>
Global $iPID, $sOEM, $sANSI, $sMsg
; Commande Dir sur le fichier du script
$iPID = Run(@ComSpec & " /c dir "& @ScriptFullPath, "", @SW_HIDE, $STDOUT_CHILD)
; Attend la fin du processus
ProcessWaitClose($iPID)
; Récupère le résultat de la commande Dir dans la variable $sOEM
$sOEM = StdoutRead($iPID)
; Convertit en ANSI
$sANSI = _WinAPI_OemToChar($sOEM)
; Affiche les deux codages
$sMsg = "Version OEM:--------------" & @crlf & $sOEM & @crlf
$sMsg &= "Version ANSI:--------------" & @crlf & $sANSI
MsgBox(0,"_WINApi_OEMToChar", $sMsg)
- Barthandelus
- Niveau 4
- Messages : 53
- Enregistré le : mer. 02 janv. 2019 14:34
- Status : Hors ligne
Re: Flux STDIN/OUT ?
Bonjour,
Ok, je comprends. Quel différence cependant entre l'usage de Run() + ProcessWaitClose() et RunWait() ?
Ok, je comprends. Quel différence cependant entre l'usage de Run() + ProcessWaitClose() et RunWait() ?
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: Flux STDIN/OUT ?
Si tu souhaites récupérer un flux Stdout en continu, ça serait plutôt ça
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- Barthandelus
- Niveau 4
- Messages : 53
- Enregistré le : mer. 02 janv. 2019 14:34
- Status : Hors ligne
Re: Flux STDIN/OUT ?
Je vois le genre.
Cependant, mon programme fonctionne avec WINPCAP, ce qui veut dire qu'il peut détecter x IP la même seconde, et donc va créer en conséquent x $PID pour sous-traiter les réponses des différentes IP.
Est-ce que ça fonctionnerait aussi comme ça en prenant en compte cette configuration ?
Sinon, n'existerait-il pas des Handlers en AI3 qui permettrait de balancer une fonction dès qu'un retour d'un x PID child est reçu par mon application mère ?
Cependant, mon programme fonctionne avec WINPCAP, ce qui veut dire qu'il peut détecter x IP la même seconde, et donc va créer en conséquent x $PID pour sous-traiter les réponses des différentes IP.
Est-ce que ça fonctionnerait aussi comme ça en prenant en compte cette configuration ?
Sinon, n'existerait-il pas des Handlers en AI3 qui permettrait de balancer une fonction dès qu'un retour d'un x PID child est reçu par mon application mère ?