gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:31:59 24 4
gpt4 key购买 nike

当从 Cmd 运行应用程序时,我有一个关于控制台与 Windows 应用程序的好奇问题,直接调用 exe。
如果应用程序被编译为控制台应用程序(将其称为我的 ConApp),当通过 cmd 运行应用程序时,提示会等待应用程序完成运行,然后再继续。但是,如果该应用程序已被编译为 Windows 应用程序(将其称为我的 WinApp),则通过 cmd 启动该应用程序提示符将启动并忘记 WinApp,这是可以理解的预期行为。
要让 WinApp 停止 cmd 的触发和遗忘,必须在 cmd 中使用类似“start\wait WinApp.exe”的内容启动应用程序,这将导致 Cmd 提示在继续之前等待 WinApp 停止运行。
我的问题是控制台应用程序如何通知 Cmd,或者 Cmd 如何知道它需要保持打开状态,而不是即发即忘 ConApp?是否可以在我的 WinApp 中调用相同的行为,这样我就不必调用“start\wait”?

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

最佳答案

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

  • 1:原生
  • 2:Windows/图形用户界面
  • 3:Windows 非 GUI
  • 5:OS/2
  • 7: POSIX

这就是告诉 windows 它是什么类型的程序,从而使它能够像 cmd 一样做出不同的选择。

Documentation Link

关于c# - 通过 Cmd 启动 Windows 应用程序与控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20961904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com