Announcement

Collapse
No announcement yet.

Rückgaben externer Shellprogramme Abfangen und ausgeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rückgaben externer Shellprogramme Abfangen und ausgeben

    Hallo,

    ich rufe aus meinem Programm ein anderes Shellprogramm auf, hierbei übergebe ich auch eineige Parameter die das entsprechende Programm ausführt. während das externe Programm ausgeführt wird, sollten eigentlich Rückgabewerte zurück gegeben werden -denke ich- denn wenn ich das Programm normal in der Eingabeaufforderung ausführe wird mie auch angezeigt was gerade geschieht. Diese Textausgaben würde ich auch gerne als eine Art Fortschrittanzeige in meinem Programm ausgeben. Folgendes habe ich derzeit in meinem Code:

    PHP Code:
    p.StartInfo.FileName Me.winRarVerzeichnis.Text "\rar.exe"
            
    PackPath " e -kb """ Me.TextBox1.Text """ """ Me.TextBox2.Text """"
            
    p.StartInfo.Arguments PackPath
            p
    .StartInfo.UseShellExecute False
            p
    .StartInfo.RedirectStandardOutput True
            p
    .StartInfo.CreateNoWindow True
            Dim sOutput 
    As String
            p
    .Start()
            
    sOutput p.StandardOutput.ReadToEnd() 
            
    Me.ProcessOutput.Text sOutput
            p
    .WaitForExit()
            
    p.Close()
            
    MessageBox.Show("Entpacken erfolgreich beendet >>> " sOutput"Fertig!"MessageBoxButtons.OKMessageBoxIcon.Information
    in sOutput wird ja schon die Asugabe des Programms gespeichert, derzeit allerdings ja nur die koplette ausgabe, welche ja erst na beendigung erfolgt. Wie kann ich aber den derzeitigen "Fortschritt" ausgeben?

    Vielen Dank im Voraus!

    Michael

  • #2
    Hallo,

    wenn der ReadToEnd-Aufruf durch die Ankopplung an einen StreamReader ersetzt wird, kann dort in einer Schleife über die Methode Peek geprüft werden, ob neue Zeichen vorliegen, um diese dann über Read abzuholen.

    Code:
    Dim StdOut As System.IO.StreamReader = p.StandardOutput
    Wenn das aufrufende Programm sein Ende über eine identifizierbare Zeichenkette signalisiert, kann das Programm die Schleife verlassen.

    Comment

    Working...
    X