Lecture et interprétation des données d'un processus

Discussion générale Lecture et interprétation des données d'un processus

  • dimanche 23 décembre 2012 09:22
     
      A du code

    Bonjour,

    Je suis actuellement en train de coder un logiciel qui me permettra de lancer Bitlocker sur des potes à distance via le réseau.

    Pour ce faire je doit simplement lancer un processus cmd.exe et y injecter des commandes dos, c'est assez simple à faire mais là ou cela se complique c'est quand je veut utiliser les données de sortie du processus et les utiliser afin de créer des boucles et autres trucs.

    Ce que j'aimerais faire pour l'instant c'est réussir à faire un bout de code qui va lancer une requête ping via mon processus cmd.exe et si le ping réussi lancer une seconde commande, si le ping ne réussi pas je recommence jusqu'à que cela fonctionne.

    Le code que j'utilise actuellement pour lancer le processus en tâche de fond est le suivant :

    Public Class Form1
        Dim P As New Process
        Dim SW As System.IO.StreamWriter
     
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            P = New Process
            AddHandler P.OutputDataReceived, AddressOf DisplayOutput
            AddHandler P.ErrorDataReceived, AddressOf DisplayOutput
            P.StartInfo.CreateNoWindow() = True
            P.StartInfo.UseShellExecute = False
            P.StartInfo.RedirectStandardInput = True
            P.StartInfo.RedirectStandardOutput = True
            P.StartInfo.RedirectStandardError = True
            P.StartInfo.StandardOutputEncoding = System.Text.Encoding.GetEncoding(850)
            P.StartInfo.FileName = "cmd.exe"
            P.StartInfo.WorkingDirectory = "C:\Windows\System32"
            P.Start()
            P.SynchronizingObject = TextBox1
            P.BeginOutputReadLine()
            P.BeginErrorReadLine()
            SW = P.StandardInput
            SW.WriteLine()
     
        End Sub
     
        Private Sub DisplayOutput(ByVal sendingProcess As Object, ByVal output As DataReceivedEventArgs)
            TextBox1.AppendText(output.Data() & vbCrLf)
        End Sub
     
            Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            SW.WriteLine("ping " & TextBox2.Text)
        End Sub
     
    End Class

    La TextBox1 est une fenêtre qui m'affiche la fenêtre cmd.exe afin de vérifier les commandes injectées et les erreurs (c'est juste pour les essais, cette fenêtre est menée à disparaître dans le futur)

    La TextBox2 est un champ dans lequel j'entre l'adresse IP du poste que je souhaite "pinger/bitlocker".

    Merci d'avance pour vos réponses.

    Jihem_B

Toutes les réponses