2013-08-01 75 views
1

我正在使用一些可以使用基於小型命令行應用程序進行遠程控制的顯微鏡軟件。爲了更有效地使用這個應用程序,我想用C#編寫我自己的軟件。從cmd應用程序接收狀態更新

我已經成功地連接到使用該軟件主:

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的應用,現在只要接收的圖像被收購等信息。我想利用這些收到的狀態來處理髮生的任何事情。例如,在捕獲圖像後更改掃描區域。

我很確定我必須提出某種事件來記錄傳入的狀態,這就是我現在卡住的地方。我不知道如何創建一個事件,該事件可以識別新消息何時發送到接收器進程。

回答

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

+0

非常感謝爲你的答案。似乎是我正在尋找的東西。不幸的是,到目前爲止還沒有得到它的工作(也看過了msdn鏈接)。我會繼續修改它。 – matjes

相關問題