1

我正在使用一些显微镜软件,可以使用基于命令行的小型应用程序进行远程控制。为了更有效地使用这个应用程序,我想使用 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 中的应用程序,它现在可以在获取图像时接收信息,依此类推。我想使用这些收到的状态来处理发生的任何事情。例如,在捕获图像后更改扫描区域。

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

4

1 回答 1

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

于 2013-08-01T14:52:37.997 回答