我将从C ++应用程序开始解释我的确切要求。我有一个C ++应用程序,它从控制台(键盘)获取输入(一个名为“run”的小命令),而不使用任何参数(C ++应用程序在项目中使用getchar())。以及我能够使用System.Diagnostics.Process从C#运行exe文件的问题,但我想在C#中以编程方式输入命令“run”来执行C ++ Application。有可能吗?
答案 0 :(得分:3)
是的。您需要重定向生成的进程的输入流,以便您可以直接写入它:
var proc = new Process();
proc.StartInfo.FileName = "program.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.Start();
var sw = proc.StandardInput;
现在这将写入您的进程的标准输入,就像您使用键盘输入文本一样:
sw.WriteLine("run something");
最后,当你完成写作时,不要忘记清理:
sw.Close();
proc.WaitForExit();
proc.Close();
答案 1 :(得分:0)
// Use ProcessStartInfo class
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "run.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "-f j ";
try
{
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
}
catch
{
// Log error.
}