如何在Win32程序中完全隐藏控制台?

时间:2012-04-18 09:00:17

标签: windows winapi console windows-console

使用下面的代码,控制台被隐藏但是它出现约1秒钟。

如何完全隐藏控制台?

#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <iostream>

using namespace std;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmdLine, int cmdShow){

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

MessageBox(NULL, TEXT("Hello!"), TEXT("yuhuuu"), 0);
return 0;
}

1 个答案:

答案 0 :(得分:1)

您的编译器设置有些奇怪。 (你没有指定你的编译器所以我假设MSVC)

示例中的WinMain入口点函数由GUI应用程序(链接器开关/SUBSYSTEM:WINDOWS)使用,除非您调用AllocConsole,否则这些应用程序不会获得控制台。

如果您链接/ SUBSYSTEM:CONSOLE,那么Windows将在您的代码执行之前为该进程创建一个控制台,但这些应用程序的正常入口点是普通的main函数。

您是否使用/ ENTRY开关强制进入?无论哪种方式,请确保/ SUBSYSTEM开关和入口点函数定义兼容并匹配您要创建的应用程序类型(GUI或控制台)