2013-10-22 19 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

相关问题