2013-10-22 49 views
0

我有一個可執行文件(購買的工具),它接受它自己的腳本語言形式。我想用我們自己的代碼包裝該可執行文件以改進功能。如何通過標準輸入將腳本通過標準輸入作爲參數傳遞給可執行文件

除了創建臨時腳本文件並將其作爲參數傳遞外,是否有一種可接受的方式在C#中執行此操作?

目前我想是這樣的:

System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(); 
psi.FileName = "PathToExe";  
psi.RedirectStandardInput = true; 

using (System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi)) 
{ 
    using (System.IO.StreamWriter stdin = p.StandardInput) 
    { 
     stdin.Write("script line one"); 
     stdin.Write("script line two"); 
     stdin.Flush(); 

    } 

    p.WaitForExit(10000); 
} 

任何幫助是非常感謝!

+0

代碼是對的 - 你可能想說明什麼是代碼中的問題......請注意,如果工具打印任何需要讀取輸出的內容,否則它將簡單地「掛起」,等待輸出消耗。 –

+0

我會盡力實現閱讀部分。現在的問題是沒有任何反應。如果我從命令行(使用物理腳本)運行相同的命令,它將處理命令並輸出文件。從項目它將運行並結束,沒有創建文件。腳本中的命令與我通過標準輸入的命令是相同的。 – atatko

+0

注意:爲了簡化調試,考慮構建簡單地讀取輸入和寫入輸出(或文件)並使用它來代替「工具」的測試exe。 –

回答

0

添加

psi.UseShellExecute = false; 

之前啓動這一進程,並應工作,測試你的自我創建項目(控制檯),並使用到Console.ReadLine()

+0

我正在這樣做,但我忽略了將其包含在上面的代碼中。我很抱歉! – atatko

相關問題