【发布时间】:2012-12-16 09:14:51
【问题描述】:
我想创建一个工具,它既可以用作命令行(根据输入参数显示一些控制台输出),也可以根据输入参数显示一个窗口。
我正在使用带有 C++ 的 MSV2012,看来您必须在控制台和窗口应用程序之间“选择”。
我知道网络上充斥着使用 AllocConsole() 并重定向 std::out 的示例,但它不像命令行应用程序:从 Windows 控制台调用 exe 将打开一个新窗口控制台输出...
有没有办法让它使用当前的控制台窗口而不是分配一个新的?
如果不可能的话,我会做2个申请,但很遗憾..
【问题讨论】:
-
这是一篇很老的文章,但它提供了一种可能的解决方案:codeguru.com/cpp/w-d/console/redirection/article.php/c3955/…
-
+1 关于 Alex 刚刚链接的内容。 Visual Studio 从您询问的命令行完成同样的事情。
-
快速回答是您可以使用 AttachConsole 代替 AllocConsole,但也有缺点,并且拥有两个应用程序通常是最好的方法。有关详细信息,请参阅链接问题的答案。
-
它在技术上不受支持,但我找到了一个很好的解决方案,方法是获取当前进程的快照、找到父进程、如果它是控制台应用程序则附加到它的控制台或使用 AllocConsole 创建一个、重定向输出,如果它是 cmd.exe 则获取父进程的线程并暂停它,在我退出我的应用程序之前恢复它
标签: c++ windows visual-c++ console-application