Win GUI App从Console =>开始打印到控制台不可能?

时间:2011-06-21 13:05:20

标签: winapi console-application

这不是另一个“我需要在我的GUI应用程序中使用控制台”,这已经经常讨论过了。我的情况与此不同。

我有一个Windows GUI应用程序,它是从命令行运行的。现在,如果你将错误的参数传递给这个应用程序,我会想要一个弹出窗口显示可能的开关,但是我想将它打印到产生我的过程的控制台中。

我到目前为止我可以打印到控制台(调用AttachConsole(...)进行父进程)但问题是我的应用程序没有“阻塞”。一旦启动它,命令提示符就会返回,所有输出都会写入此窗口(参见附图中的图示)。

_

我玩了一下,创建了一个控制台应用程序,运行它,看到那里,它“阻止”,提示只在应用程序终止后重新出现。将我的GUI应用程序切换到/ SUBSYSTEM:控制台导致奇怪的错误(MSVCRTD.lib(crtexe.obj):错误LNK2019:函数“___ tmainCRTStartup”中的未解析的外部符号“_main”。)

我已经看到了来自MSDEV的“.exe”和“.com”文件方法的管道方法,但我发现它很糟糕。有没有办法解决这个更漂亮的问题?

2 个答案:

答案 0 :(得分:2)

这不是您可以通过修改应用程序来更改的行为(除了已经讨论过的重新标记)。命令解释程序查看可执行文件标记的子系统,并决定是否等待应用程序相应地终止。 If the executable is labelled as having a GUI, then the command interpreter doesn't wait for it to terminate.

在某些命令解释器中,这是可配置的。例如,在JP Software's TCC/LE中,可以configure the command interpreter to always wait for applications to terminate,甚至是GUI。但是,在Microsoft的CMD中,这不是可配置的行为。 Microsoft的回答是将START command/WAIT选项一起使用。

再一次:这不是您的应用程序的行为。除了作为TUI程序的重新标记之外,没有涉及您的代码的编程方式来改变它。

答案 1 :(得分:1)

也许编写一个基于控制台的包装应用程序来检查参数,在错误参数上打印错误消息,并在参数正确时调用/启动实际程序?