我用 C++ 编写了一个程序。它只是使用控制台使其尽可能便携。不幸的是,许多 Windows 用户似乎不了解如何使用该程序(Linux 用户对此很好:))。所以我想为那个程序写一个 GUI。由于这只需要在 Windows 上运行,我想用 C# 编写它。
但我想在原始程序之外维护 GUI。所以基本上,我需要一种将编译后的 *.exe 包含到另一个程序中的方法。有没有办法从另一个程序捕获控制台输出并将输入发送给它?还有,原程序的控制台可以隐藏吗?
类似问题
我用 C++ 编写了一个程序。它只是使用控制台使其尽可能便携。不幸的是,许多 Windows 用户似乎不了解如何使用该程序(Linux 用户对此很好:))。所以我想为那个程序写一个 GUI。由于这只需要在 Windows 上运行,我想用 C# 编写它。
但我想在原始程序之外维护 GUI。所以基本上,我需要一种将编译后的 *.exe 包含到另一个程序中的方法。有没有办法从另一个程序捕获控制台输出并将输入发送给它?还有,原程序的控制台可以隐藏吗?
类似问题
如果您可以将程序提取到 C++ 库中,然后由 C++ 控制台程序使用,那就太好了。通过这种方式将它与 C# 集成,您所要做的就是在该 DLL 中定义 pInvoke 入口点,然后您可以直接从 GUI 应用程序调用您的代码。
您可以通过多种方式来执行此操作。System.Diagnostics.Process类具有允许您访问应用程序的输入和输出的方法,您可以从那里自动化它。
基本上,您可以使用 StandardInput 和 StandardOutput 方法获取输出,然后与输入交互以控制应用程序。您问题的“类似问题”中的帖子显示了该问题的第一部分,即 StandardOutput 部分。
试试看这里
您可以在您的 C# 应用程序中包含一个命令行开关(例如 /g),它将以 GUI 模式而不是控制台运行您的应用程序。您只需评估 Main 函数中的参数,然后启动一个 Win Form 接受输入并运行任何算法,或者只是坚持控制台模式。默认情况下,您的应用程序将运行控制台,反之亦然,如果您选择的话。
尽管副本可能涵盖了您想要的内容,但您提出了一个需要回答的特定问题:
我需要一种将已编译的 *.exe 包含到另一个程序中的方法
你真的不能这样做。充其量,您可以按照@Justin Ethier 的建议创建一个库,您的 GUI 和命令行工具都依赖该库。