【问题标题】:How to COMPLETELY hide console in a Win32 program?如何在 Win32 程序中完全隐藏控制台?
【发布时间】:2012-04-18 09:00:16
【问题描述】:

使用下面的代码,控制台是隐藏的,但它会显示大约 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;
}

【问题讨论】:

    标签: windows winapi console windows-console


    【解决方案1】:

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

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

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

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

    【讨论】:

    • Code::Blocks 是 IDE 而不是编译器,它同时支持 MinGW/GCC 和 MSVC...
    • ops... 我怎么知道我使用的是什么编译器?
    • 在设置中选择“GNU GCC 编译器”
    • 好的,我找到了。是 MinGW。
    • 我没有强迫任何东西......所以有什么理由吗?
    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多