如何从.NET WPF运行C程序的.exe?

时间:2018-01-05 06:16:13

标签: c# c wpf

我想运行" pocketsphinx_continuous.exe "从我的WPF应用程序用C 语言编写的程序。目前我使用命令提示符运行它。 pocketsphinx_continuous.exe需要参数。

命令将是这样的。打开cmd,转到" pocketsphinx_continuous.exe"存在并运行,

pocketsphinx_continuous.exe -infile test\data\goforward.raw -hmm model\en-us\en-us -lm model\en-us\en-us.lm.bin -dict model\en-us\cmudict-en-us.dict

程序在命令提示符下打印一个字符串。而不是这个我想把这个字符串带到我的WPF应用程序。

说,对于按钮单击,我想运行上面的程序,并将结果字符串放到同一窗口中的文本框中。运行C程序应该在后台运行。

我该怎么做?我是否必须在C和WPF应用程序之间编写服务?

1 个答案:

答案 0 :(得分:1)

您必须使用Process.Start()启动进程并重定向其控制台输出。甚至可以在后台执行此操作并隐藏控制台窗口。

创建一个像这样的新流程:

var process = new Process 
{
    StartInfo = new ProcessStartInfo 
    {
        FileName = "pocketsphinx_continuous.exe",
        Arguments = "-infile test\data\goforward.raw -hmm model\en-us\en-us -lm model\en-us\en-us.lm.bin -dict model\en-us\cmudict-en-us.dict",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        CreateNoWindow = true
    }
};

现在您可以启动该过程并重定向控制台输出:

process.Start();
while (!proc.StandardOutput.EndOfStream) 
{
    string line = process.StandardOutput.ReadLine();
}

line将包含程序输出的一行,您可以随意使用它。