如何从C#运行C ++ .exe文件?

时间:2011-10-20 11:51:04

标签: .net c#-4.0

我将从C ++应用程序开始解释我的确切要求。我有一个C ++应用程序,它从控制台(键盘)获取输入(一个名为“run”的小命令),而不使用任何参数(C ++应用程序在项目中使用getchar())。以及我能够使用System.Diagnostics.Process从C#运行exe文件的问题,但我想在C#中以编程方式输入命令“run”来执行C ++ Application。有可能吗?

2 个答案:

答案 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.
    }