我想运行" 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应用程序之间编写服务?
答案 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
将包含程序输出的一行,您可以随意使用它。