禁用显示控制台窗口

时间:2009-08-16 07:53:08

标签: visual-c++ console

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

5 个答案:

答案 0 :(得分:13)

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

Properties > Linker > System 

SubSystem更改为Windows

并在您的代码中 取代

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

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

并添加

#include <windows.h>

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:0)

您的问题很模糊,所以我将尝试回答我是如何解释的......如果您不想要控制台窗口,请尝试使用其他子系统。具体来说,您可能需要Windows或Native子系统而不是Console子系统。

答案 3 :(得分:0)

您可以通过操纵预编译的EXE子系统来禁用控制台-这样,您在最终产品上工作时无需对代码进行任何更改-负面方面是,每次重新编译项目时都需要执行此操作。您可以通过十六进制编辑器完成操作,也可以使用免费的CFF Explorer

  1. 通过 CFF资源管理器
  2. 打开EXE
  3. 转到 Nt标头>可选标头
  4. 在子系统上导航,并在右侧单击 Windows控制台,然后选择 Windows GUI
  5. 保存文件,控制台将不再出现

您可以进行二进制比较并在原始PE标头中找到确切的位置,然后可以在VS中进行一些自动化的后编译

答案 4 :(得分:0)

对于 CMake 用户。

add_executable(${exeName} WIN32)

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