【问题标题】:How can we prevent console windows from being displayed under Visual Studio?我们如何防止控制台窗口在 Visual Studio 下显示?
【发布时间】:2011-08-28 15:24:00
【问题描述】:

当我们在 Visual Studio 下启动应用程序时,是否可以(以及如何)禁用控制台窗口的显示?

编辑:

一些精度:

我在这个项目开始时没有 GUI 系统。 我第二次将 QT gui 添加到这个项目中。 目前,当我启动我的应用程序时,我有控制台系统和 QT 的 MainWindow

我想禁用控制台系统

【问题讨论】:

  • 有很多不同的方法来回答这个问题......哪个是正确的取决于你到底想要完成什么。您能否编辑您的问题以向我们提供更多详细信息?
  • 啊,那么简单。您需要将您的应用程序转换为标准的 Windows 应用程序,而不是控制台应用程序。 Als's answer你有吗?

标签: c++ windows visual-studio winapi console-application


【解决方案1】:

您将只需要使用一个应用程序而不是控制台应用程序。为此:

将子系统更改为 Windows。您可以在以下位置找到它:

Properties ---> Linker ---> System 

并替换

int _tmain(int argc, _TCHAR* argv[]) 

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) 

【讨论】:

  • 我在 VS2010 下找不到 SubSystem/Windows 选项
  • @Guillaume07:更新了答案:)
  • 对于未来的谷歌员工:您不必更改子系统。如果没有选择子系统(默认为控制台项目),只需将_tmain 替换为_tWinMain 就足够了。
  • VS2013: Project > Properties > Linker > System 然后将 SubSystem 设置为 Windows
【解决方案2】:

您不能(但见下文),这与 Visual Studio 无关,而是与 Windows 如何区分控制台和“非控制台”应用程序。

控制台应用程序在其可执行文件中设置了某种标志,以便 Windows 知道它是 CLI,然后 Windows 将始终打开控制台并将其附加到此进程。

GUI 应用没有此标志,因此 Windows 不会附加控制台(当从 Windows cmd.exe shell 运行时,shell 也不会附加到此应用。)

可以使用AllocConsoleFreeConsole Windows API 函数控制控制台从您的应用程序附加和分离,但您真正想要做的可能是Als describes in his answer

【讨论】:

    【解决方案3】:

    如果它是一个 Windows 应用程序,那么是的 - 你控制 UI。如果它是一个控制台应用程序,那么您将获得一个带有 stdin、stdout 等的控制台。如果您正在寻找完全没有 UI 的东西,那么也许 Windows 服务就是您所追求的。

    【讨论】:

    • 或者只是一个没有指定WS_VISIBLE的标准Windows应用程序。没有理由仅仅为了获得没有 UI 的应用而创建 Windows 服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多