0

私のアプリケーションは、定期的に process.start でコンソール プログラムを開始します。プログラムの出力を「リアルタイム」で監視する必要があります。

たとえば、プログラムは次のテキストをコンソールに書き込みます。

約 1 秒ごとに新しいドットが表示され、プログラムがまだ処理中であることをユーザーに知らせます。ただし、... プログラムが CR/LF を出力するまで、プログラムの標準出力を取得できません (実行中)。

出力をリアルタイムで取得するにはどうすればよいでしょうか?たとえば、VB.NET のデータベースにパイプするなどです。

4

2 に答える 2

1

私は家にこのようなことをしたプロトタイプアプリケーションを持っていたので、私は腹を立てています。取得できるか確認します。それまでの間、このリンクをご覧ください。

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx

アプリケーションの出力をカスタムストリームにリダイレクトする方法を示しています。

Public Class Form1

    Private _p As Process

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim psi As New ProcessStartInfo()

        psi.FileName = "C:\mydir.bat"
        psi.RedirectStandardOutput = True
        psi.UseShellExecute = False

        _p = New Process()
        _p.Start(psi)
        tmrReadConsole.Enabled = True
    End Sub

    Private Sub tmrReadConsole_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrReadConsole.Tick
        If _p IsNot Nothing Then
            txtConsoleOutput.Text = _p.StandardOutput.ReadToEnd()
        End If

    End Sub
End Class

上記は、コンソールの出力ストリームをポーリングし、そのコンテンツをテキストボックスに取り込むために使用されるタイマーを備えたWebフォームです。それは完全には機能しませんが(したがって、私が他のアプリを見つけたい理由)、あなたはその考えを理解します。

お役に立てれば。

于 2009-06-29T16:21:36.210 に答える
1

出力をテキスト ファイルに送信し、そのファイルを毎秒読み取るのはどうでしょうか。

于 2009-06-29T14:35:30.650 に答える