我找到了关于如何获取shell输出的this代码:
Dim oProcess As New Process()
Dim oStartInfo As New ProcessStartInfo("ApplicationName.exe", "arguments")
oStartInfo.UseShellExecute = False
oStartInfo.RedirectStandardOutput = True
oProcess.StartInfo = oStartInfo
oProcess.Start()
Dim sOutput As String
Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput
sOutput = oStreamReader.ReadToEnd()
End Using
Console.WriteLine(sOutput)
这只是在命令完成后报告输出,而不是实时报告。
有没有办法实时获得输出?
答案 0 :(得分:1)
您需要订阅名为OutputDataReceived
的流程上的事件。
这可以使用
完成的AddHandler
以下方式将演示如何完成此操作:
AddHandler oProcess.OutputDataRecived, AddressOf OutputData
从这里开始,它将需要Visual Studio可以为您生成的方法,或者您可以生成。它需要以下论点
Object sender, DataRecievedEventArgs e
在实际方法中,这将如下所示:
Private Sub OutputDataRecieved(sender As Object, e As DataRecievedEventArgs)
在这里,您可以使用e.Data
获取当前行。
希望这有帮助