2015-04-19 26 views
2

返回的響應我想將param傳遞給另一個也是由c#開發的exe文件。 我知道如何從我的應用程序傳遞參數到exe文件。這樣我可以將param傳遞給exe文件如何捕獲由EXE文件C#

Process p= new Process(); 
p.StartInfo.FileName = "demo.exe"; 
p.StartInfo.Arguments = "param1 param2"; 
p.Start(); 
p.WaitForExit(); 

現在demo.exe文件會做一些工作,並會返回一些數據。我想在我的最後捕獲這些數據。所以引導我在我的代碼中修改以捕獲由demo.exe文件返回的響應。幫助我改變代碼。謝謝

可能低於解決方案可能會解決我的問題。我會測試它。 當您創建Process對象設置的StartInfo適當:

var proc = new Process { 
    StartInfo = new ProcessStartInfo { 
     FileName = "program.exe", 
     Arguments = "command line arguments to your executable", 
     UseShellExecute = false, 
     RedirectStandardOutput = true, 
     CreateNoWindow = true 
    } 
}; 

then start the process and read from it: 

proc.Start(); 
while (!proc.StandardOutput.EndOfStream) { 
    string line = proc.StandardOutput.ReadLine(); 
    // do something with line 
} 
+1

可能的複製http://stackoverflow.com/questions/4291912/process-start-how-to-get-輸出 – khlr

+0

使用'Process.ExitCode':https://msdn.microsoft.com/en-us/library/system.diagnostics.process.exitcode%28v=vs.110%29.aspx –

回答

1

一個可能的解決方案是使用RedirectStandardOutput和你的結果存儲在一個文件中

using(Process proc = new Process()) 
{ 
    proc.StartInfo.UseShellExecute = false; 
    proc.StartInfo.FileName = <your exe>; 
    proc.StartInfo.Arguments = <your parameters>; 
    proc.StartInfo.RedirectStandardOutput = true; 
    proc.OutputDataReceived += LogOutputHandler; 
    proc.Start(); 
    proc.BeginOutputReadLine(); 
    proc.WaitForExit(); 
} 

private static void LogOutputHandler(object proc, DataReceivedEventArgs outLine) 
{ 
    <write your result to a file here> 
} 
+0

如何從將從我的應用程序調用的exe文件返回值。假設我打算調用demo.exe文件。所以我需要編寫或如何從演示應用程序返回值,結果我的主應用程序可以讀取該值。請指導我如何返回數據的代碼。謝謝 – Mou

0

簡單的解決方法是老式的進程退出代碼。

一旦進程終止,您可以使用p.ExitCode來捕獲代碼中的結果。

此外,demo.exe需要在退出之前設置Environment.ExitCode

通常,0用於報告成功。

+0

假設demo.exe將返回我想從我的應用程序捕獲的字符串值。只是指導我需要寫什麼代碼? – Mou

+0

可以使用許多不同的解決方案...簡單:您可以將結果輸出到一個文件並在另一個項目中讀取。 不那麼容易:您可以像@Beno所述的那樣使用WCF進行跨進程通信 – Pascal

0

如果它只是int,你可以檢查進程的ExitCode。 否則你可以使用WCF管道在進程間通信

0

main的返回值是'void',所以你不能返回任何項目。您可以使用標準輸出,這是一個流來傳回信息。一個簡單的方法是將XML流返回到易於解析的調用程序。