如何从 .NET WPF 运行 C 程序的 .exe? [复制]
Posted
技术标签:
【中文标题】如何从 .NET WPF 运行 C 程序的 .exe? [复制]【英文标题】:How to run a .exe of a C program from .NET WPF? [duplicate] 【发布时间】:2018-06-14 22:43:07 【问题描述】:我想从我的 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 应用程序之间编写服务吗?
【问题讨论】:
这是一个很常见的场景,如果你搜索你会发现很多例子。这是一个:***.com/questions/4291912/… 【参考方案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
将包含一行程序的输出,你可以用它做任何你想做的事情。
【讨论】:
以上是关于如何从 .NET WPF 运行 C 程序的 .exe? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何为wpf c#application创建静默安装程序exe?