从cmd应用程序接收状态更新

时间:2013-08-01 14:28:09

标签: c# events process cmd

我正在使用一些可以使用基于命令行的小应用程序远程控制的显微镜软件。为了更有效地使用这个应用程序,我想用C#编写我自己的软件。

我已经设法使用以下方法连接到主软件:

public partial class Form1 : Form
{

    Process receiver = new Process
    {
        StartInfo = new ProcessStartInfo
        {
            FileName = "WSxMrc.exe",
            Arguments = "-m recv -a 127.0.0.1 -p 9602",
            UseShellExecute = false,
            RedirectStandardOutput = true,
            CreateNoWindow = true
        }
    };

    private void button1_Click(object sender, EventArgs e)
    {
        bConnect.Enabled = false;
        bDconnect.Enabled = true;

        receiver.Start();     
    }...

使用cmd中的应用程序,它会在获取图像时立即接收信息,依此类推。我想利用这些收到的状态对发生的事情采取行动。例如,在捕获图像后更改扫描区域。

我很确定我必须提出某种事件来记录传入状态,这就是我现在被困住的地方。我不知道如何创建一个事件,可以识别新消息何时发送到接收者进程。

1 个答案:

答案 0 :(得分:0)

您需要使用OutputDataRecieved事件来处理重定向的输出。

在reciever.Start()

之后添加这些行
receiver.OutputDataReceived += receiver_OutputDataReceived;
receiver.BeginOutputReadLine();

然后添加事件处理程序

void reciever_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
    ...
}

可在此处找到更多信息

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