3

我用 C++ 编写了一个程序。它只是使用控制台使其尽可能便携。不幸的是,许多 Windows 用户似乎不了解如何使用该程序(Linux 用户对此很好:))。所以我想为那个程序写一个 GUI。由于这只需要在 Windows 上运行,我想用 C# 编写它。

但我想在原始程序之外维护 GUI。所以基本上,我需要一种将编译后的 *.exe 包含到另一个程序中的方法。有没有办法从另一个程序捕获控制台输出并将输入发送给它?还有,原程序的控制台可以隐藏吗?

类似问题

如何:在 C# 中执行命令行,获取 STD OUT 结果

4

5 回答 5

1

如果您可以将程序提取到 C++ 库中,然后由 C++ 控制台程序使用,那就太好了。通过这种方式将它与 C# 集成,您所要做的就是在该 DLL 中定义 pInvoke 入口点,然后您可以直接从 GUI 应用程序调用您的代码。

于 2010-03-26T15:57:20.733 回答
1

您可以通过多种方式来执行此操作。System.Diagnostics.Process类具有允许您访问应用程序的输入和输出的方法,您可以从那里自动化它。

基本上,您可以使用 StandardInput 和 StandardOutput 方法获取输出,然后与输入交互以控制应用程序。您问题的“类似问题”中的帖子显示了该问题的第一部分,即 StandardOutput 部分。

于 2010-03-26T15:59:30.290 回答
0

试试看这里

于 2010-03-26T15:57:58.583 回答
0

您可以在您的 C# 应用程序中包含一个命令行开关(例如 /g),它将以 GUI 模式而不是控制台运行您的应用程序。您只需评估 Main 函数中的参数,然后启动一个 Win Form 接受输入并运行任何算法,或者只是坚持控制台模式。默认情况下,您的应用程序将运行控制台,反之亦然,如果您选择的话。

于 2010-03-26T15:58:06.147 回答
0

尽管副本可能涵盖了您想要的内容,但您提出了一个需要回答的特定问题:

我需要一种将已编译的 *.exe 包含到另一个程序中的方法

你真的不能这样做。充其量,您可以按照@Justin Ethier 的建议创建一个库,您的 GUI 和命令行工具都依赖该库。

于 2010-03-26T15:58:56.470 回答