Visual c++ 禁用显示控制台窗口

Visual c++ 禁用显示控制台窗口,visual-c++,console,Visual C++,Console,我可以在Microsoft-Visual-C++显示控制台窗口中禁用哪些功能?您的问题非常模糊,因此我将尝试回答我如何解释它。。。如果不需要控制台窗口,请尝试使用其他子系统。具体来说,您可能需要Windows或本机子系统,而不是控制台子系统。在控制台应用程序中,转到 Properties > Linker > System 将子系统更改为Windows 在你的代码里 替换 与 加 #include <windows.h> #包括 这应该避免在控制台应用程序中显示控

我可以在Microsoft-Visual-C++显示控制台窗口中禁用哪些功能?

您的问题非常模糊,因此我将尝试回答我如何解释它。。。如果不需要控制台窗口,请尝试使用其他子系统。具体来说,您可能需要Windows或本机子系统,而不是控制台子系统。

在控制台应用程序中,转到

Properties > Linker > System 
子系统
更改为
Windows

在你的代码里 替换

#include <windows.h>
#包括

这应该避免在控制台应用程序中显示控制台窗口。

您可以在启动时将其隐藏。我不知道这是否会导致闪烁:

HWND hWnd = GetConsoleWindow();
ShowWindow( hWnd, SW_HIDE );

您可以通过操作预编译的EXE子系统来禁用控制台—这样,在处理最终产品时,您不需要对代码进行任何更改—消极的方面是,您每次重新编译项目时都需要这样做。您可以通过十六进制编辑器或免费使用

  • 通过CFF浏览器打开EXE
  • 转到Nt标题>可选标题
  • 浏览子系统并在右侧单击Windows控制台,然后选择Windows GUI
  • 保存文件时,控制台将不再显示
  • 您可以进行二进制比较,并在原始PE头中找到确切的位置,然后在VS中编译后为CMake用户执行一些自动化操作

    add_executable(${exeName} WIN32)
    

    您需要使用
    WinMain
    而不是
    main
    作为入口点符号。

    对于未来的谷歌用户:您不必更改子系统。如果未选择任何子系统(console项目的默认设置),只需将
    \u tmain
    替换为
    \u tWinMain
    就足够了。如果我们正在编写一个符合标准的程序,而该程序没有Windows的奇怪的伪-
    main
    ?@NicHartley此解决方案是实现这一点的一种方法。它可能不完整。如果您的要求更严格、更细致,也许您应该花些时间阅读相关的win api文档,而不是期望复制粘贴答案。有人知道如何在CMake项目中实现这一点吗?未来的谷歌用户-我看到控制台在使用时会闪烁
    HWND hWnd = GetConsoleWindow();
    ShowWindow( hWnd, SW_HIDE );
    
    add_executable(${exeName} WIN32)