2012-09-25 5 views
1

커맨드 라인을 사용하여 WireShark를 열고 패킷 캡처를 시작합니다. CMD 창을 사용하면 들어오는 패킷 수와이 번호를 신청서 양식에 표시하고 싶습니다. 현재 양식입니다. 내 코드 만 오차 내 응용 프로그램 충돌이프로세스의 출력을 얻는 방법은 무엇입니까?

static void Main(string[] args) 
{ 
    try 
    { 
     string _pcapPath = @"C:\test.pcap"; 
     Process _tsharkProcess = new Process(); 
     _tsharkProcess.StartInfo.FileName = @"C:\Program Files\Wireshark\tshark.exe"; 
     _tsharkProcess.StartInfo.Arguments = string.Format(" -i " + 2 + " -c " + int.MaxValue + " -w " + _pcapPath); 
     _tsharkProcess.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived); 
     _tsharkProcess.StartInfo.RedirectStandardOutput = true; 
     _tsharkProcess.StartInfo.UseShellExecute = false; 
     //_tsharkProcess.StartInfo.CreateNoWindow = true; 
     //_tsharkProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     _tsharkProcess.Start(); 
     StreamReader myStreamReader = _tsharkProcess.StandardOutput; 
     string myString = myStreamReader.ReadLine(); //read the standard output of the spawned process. 
     Console.WriteLine(myString); 
     _tsharkProcess.WaitForExit(); 
    } 
    catch (Exception) 
    { 

    } 

} 

private static void process_OutputDataReceived(object sender, DataReceivedEventArgs e) 
{ 
    string srt = e.Data; //arg.Data contains the output data from the process... 
} 
+0

그래서 오류 때문에 게시 - http://stackoverflow.com/questions/1700695/getting-output-from-one-executable-in-an-other-one –

+2

'RedirectStandardOutput'을 설정하기 전에 시도해 보셨습니까? 'process.Start()'호출? –

+0

이제 redirectStandardOutput 및 UseShellExecute를 process.Start()로 설정 한 후에 확인해도되지만 프로세스의 출력은 어떻게 얻을 수 있습니까? 지금은 열린 CMD 창이 비어 –

답변

2

당신이 코드

의 Nota으로 시도 할 수 있습니다 : 설정이 라인 전에 시작

  process.StartInfo.RedirectStandardOutput = true; 
      process.StartInfo.UseShellExecute = false; 
      process.Start(); 

코드 :

,
  Process process = new Process(); 
      process.StartInfo.FileName = @"C:\Program Files\Wireshark\tshark.exe"; 
      process.StartInfo.Arguments = string.Format(" -i " + _interfaceNumber + " -c " + int.MaxValue + " -w " + _pcapPath); 
      process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived); 

      process.StartInfo.RedirectStandardOutput = true; 
      process.StartInfo.UseShellExecute = false; 


     process.Start(); 

      StreamReader myStreamReader = process.StandardOutput; 
      // Read the standard output of the spawned process. 
      string myString = myStreamReader.ReadLine(); 
      Console.WriteLine(myString); 

      process.WaitForExit(); 
      process.Close(); 
     } 
+0

내가 canon't 라인 문자열에 도달 myString = myStreamReader.ReadLine(); 심지어 중단 점을 만든 후, 그것은 process.Start() 후 것 같습니다; 그것은 모두 붙어 있습니다 (그러나 프로세스가 작동하고 디스크상의 패킷을 사용하여 파일을 만듭니다) –

+0

치료를 실행하기 위해 잠시 기다려야 할 수도 있습니다 –

+0

스레드를 의미합니다. 프로세스 후 잠시 멈 춥니 다. 시작 하시겠습니까? –

관련 문제