如何获得shell命令的实时输出?

时间:2017-03-20 12:38:53

标签: vb.net shell

我找到了关于如何获取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)

这只是在命令完成后报告输出,而不是实时报告。

有没有办法实时获得输出?

1 个答案:

答案 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获取当前行。

希望这有帮助

相关问题