在程序运行时隐藏控制台的独立于平台的方法

Platform independant ways of hiding console when program runs

本文关键字:平台 方法 于平台 独立 程序 运行时 隐藏 控制台      更新时间:2023-10-16

我正在寻找一种在我的程序中隐藏控制台(在windows中)的方法,并且我找到了以下代码:

#if defined (__WIN32__)
    #include <windows.h>
    HWND hWnd = GetConsoleWindow();
    ShowWindow(hWnd, SW_HIDE);
#endif

然而,代码块一直给我error: expected constructor, destructor, or type conversion before '(' token。我做错了什么?

在MAC和linux中隐藏控制台的代码是什么?我不经常使用mac或linux,但我想让我的程序平台独立。是否存在适用于所有平台的代码?控制台甚至显示在MAC和Linux编译时?

一般来说,控制台应用程序不应该乱动它们的窗口。如果你需要更高级的东西(显示/隐藏你的窗口,决定它的大小,…),你可能应该切换到GUI应用程序。即使你不想要任何窗口,这也是正确的:创建一个GUI应用程序,不要创建窗口。

在Mac和Linux上,当你启动可执行文件时,默认不显示控制台(GUI和控制台可执行文件之间没有区别);如果您在终端中启动它,应用程序对它没有太多的控制权(除非它使用转义码,但它们是用来控制文本格式/定位的)。您可以使用一些启发式方法来猜测所使用的终端仿真器,并告诉它隐藏,但它很难看,很麻烦,并且再次违背了控制台应用程序的目的。

就你的代码片段而言,你不能把#include放在函数体中:你应该把它分成两部分:

在文件的顶部:

#ifdef __WIN32__
    #define _WIN32_WINNT 0x0500
    #include <windows.h>
#endif

函数体内部:

#ifdef __WIN32__
    ShowWindow(GetConsoleWindow(), SW_HIDE);
#endif