作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从我的 WPF 应用程序运行用 C 语言编写的“pocketsphinx_continuous.exe”程序。目前我使用命令提示符运行它。 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 应用程序之间编写服务?
最佳答案
您必须使用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
将包含程序输出的一行,您可以用它做任何您想做的事情。
关于c# - 如何从 .NET WPF 运行 C 程序的 .exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48108192/
我是一名优秀的程序员,十分优秀!