如何从 .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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

从 C# /WPF 调用 C++ 程序

将命令行参数从 VB 传递到 C# WPF 应用程序

C#/WPF应用程序实现app CLI的简单IPC机制

如何为wpf c#application创建静默安装程序exe?

从 CefSharp 1 中的 javascript 调用 .Net - wpf

如何在 IronPython 中关闭 WPF 窗口而不关闭 .NET 应用程序