START afficheur.exe /stext result.txt

optimine Messages postés 4 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 27 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 ).

2 réponses

Utilisateur anonyme
29 juin 2011 à 17:47
Bonsoir,

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()


Bonne soirée.
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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
0
Rejoignez-nous