| |

VB.NET - FortgeschritteneRe: readLine aus konsole aber wie? | |  | Autor: DaveS (Moderator) | Datum: 17.10.04 10:28 |
| Also, das ist alles ein wenig problematisch. Wenn du mit stdOut.ReadToEnd() versuchst sperrt das, bis stdOut geschlossen wird. Um cmd zu beenden musst du Exit absetzen, aber wenn dein Code nicht weiterläuft ist das schwierig. Mit .ReadLine() ist es ähnlich, das sperrt z.B. beim Commandpromt, weil keine volle Zeile geschrieben wird. Und .Peek() und .Read() klappen auch nicht, da .Peek() irgendwann einfach -1 liefert, obwohl vermutlich Daten noch geschrieben werden.
Wenn du nur ein Ping absetzen willst kannst du das einfach als Parameter zu process.Start übergeben. Wenn du mehrere Befehle brauchst kannst du alles schreiben (einschliesslich Exit) und dann .ReadToEnd() benutzen. Wenn das viele Daten sind löhnt es sich .ReadToEnd() in einem zweiten Thread laufen zu lassen, dann wird die Hauptroutine nicht gesperrt. Wie hier:
Private Delegate Sub GetDataHandler(ByVal dataIn As System.IO.StreamReader, _
ByVal dataOut As System.IO.StreamWriter)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Debug.WriteLine(Environment.GetEnvironmentVariable("COMSPEC"))
Dim swo As New System.IO.StreamWriter("C:\xdos.txt")
Dim prog As Process = New Process
prog.StartInfo.FileName = Environment.GetEnvironmentVariable("COMSPEC")
prog.StartInfo.UseShellExecute = False
prog.StartInfo.RedirectStandardOutput = True
prog.StartInfo.RedirectStandardInput = True
prog.StartInfo.CreateNoWindow = True
prog.Start()
Dim si As System.IO.StreamWriter = prog.StandardInput
Dim so As System.IO.StreamReader = prog.StandardOutput
Dim gd As New GetDataHandler(AddressOf GetData)
Dim ia As IAsyncResult = gd.BeginInvoke(so, swo, Nothing, Nothing)
Dim s As String
For i As Integer = 1 To 10
si.WriteLine("Ping 172.17.4." & i.ToString())
Next
prog.StandardInput.WriteLine("Exit")
gd.EndInvoke(ia)
prog.WaitForExit()
swo.Close()
End Sub
Private Sub GetData(ByVal dataIn As System.IO.StreamReader, _
ByVal dataOut As System.IO.StreamWriter)
dataOut.Write(dataIn.ReadToEnd())
End Sub |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|