通过Cmd启动Windows应用程序与控制台应用程序

Hei*_*ich 13 c# cmd console-application windows-applications

当从Cmd运行应用程序时直接调用exe,我对Console vs Windows Application有好奇心的问题.
如果应用程序编译为控制台应用程序(将其称为我的ConApp),则在通过cmd运行应用程序时,提示会等待应用程序完成运行,然后再继续.但是,如果应用程序已编译为Windows应用程序(将其称为我的WinApp),则通过cmd启动应用程序,提示将触发并忘记WinApp,可以理解这是预期的行为.
要让WinApp停止发送和忘记cmd,必须使用类似"start\wait WinApp.exe"的内容在cmd中启动应用程序,这将导致Cmd提示等待WinApp停止运行持续.
我的问题是控制台应用程序如何通知Cmd,或者Cmd如何知道它需要保持打开状态,而不是忘掉ConApp?是否有可能在我的WinApp中调用相同类型的行为,以便我不必调用"start\wait"?

注意:
我已经使用过AllocConsole和AttachConsole,但是当我在WinApp中使用AttachConsole(-1)时,Cmd仍然会忘记WinApp,WinApp似乎只是打开一个新的控制台窗口.

Jar*_*Par 7

该信息存储为PEOptHeaderEXE二进制格式部分的一部分.具体来说,该Subsystem字段告诉操作系统这是什么类型的应用程序,并且可以具有以下值

  • 1:原生
  • 2:Windows/GUI
  • 3:Windows非GUI
  • 5:OS/2
  • 7:POSIX

这就是告诉Windows它是什么类型的程序,因此它能够像cmd那样做出不同的选择.

文档链接