optimine
Messages postés4Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention27 juin 2011
-
26 juin 2011 à 20:22
Utilisateur anonyme -
29 juin 2011 à 17:47
Bonjour,
Je m'explique,
Une application afficheur.exe , affiche du Texte quand elle est exécutée.
Je voulais lancer l'application afficheur.exe en mode invisible et récupérer ce Texte en un fichier txt.
J'ai réussi à le faire avec un fichier bat :
START afficheur.exe /stext result.txt
et ça fonctionne super bien, afficheur .exe n'apparaît pas et sur le fichier result.txt je récupère la sortie texte...même si je ne comprends pas vraiment comment.
Ma question :
Est ce possible de faire la même chose mais cette fois ci avec Visual Basic ? ( j'utilise la version express 2010 ).
Pour intercepter les données d'un exécutable tu dois lancer celui-ci à l'aide de la classe Process.
Il faut ensuite le paramétrer par sa propriété StartInfo de manière à capturer les flux de données.
Lancer le process en question avec sa méthode Start.
Commencer à lire les données avec la méthode BeginOutputReadLine.
Il faut également ajouter un gestionnaire d'événement de réception de données.
Voici un exemple :
Dim monProcess As New Process()
With monProcess
.StartInfo.FileName = "monexe.exe"
.StartInfo.Arguments = "-b 128"
.StartInfo.CreateNoWindow = False
.StartInfo.UseShellExecute = False
.StartInfo.RedirectStandardOutput = True
.StartInfo.RedirectStandardInput = True
.Start()
.BeginOutputReadLine()
End With
AddHandler monProcess.OutputDataReceived, AddressOf DonneesRecues
Et le code du gestionnaire de l'événement :
Private Sub DonneesRecues(ByVal monProcess As Object, ByVal Ligne As DataReceivedEventArgs)
If Not String.IsNullOrEmpty(Ligne.Data) Then
Dim TexteRecu As String = Ligne.Data.ToString
'dans ton cas, tu peux ici écrire les données lues dans un fichier...
End If
End Sub
Enfin, si besoin, pour communiquer avec ton exécutable, il te suffit de récupérer son objet StreamWriter que renvoi la propriété StandardInput.
Dim Writer As IO.StreamWriter = monProcess.StandardInput
Writer.WriteLine("OK")
Writer.Flush()
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 26 juin 2011 à 20:31
Bonjour,
j'utilise la version express 2010
1) mais tu es ici dans la section VB6 !
2) Je suppose (mais tu ne le dis pas) qu'il s'agit de l'utilisation du Dos.
en VB6, on se servirait de Shell et d'un .bat
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est