Win32编程隐藏控制台窗口
林学习C + +和我做了一个新的程序,我删除了一些代码,现在我的控制台窗口不会隐藏有没有办法让它隐藏在启动时没有他们看到它
如果您正在编写一个控制台程序,并且您想要将程序与启动的控制台断开连接,请联系FreeConsole
。 最终,你可能不会满意这个函数的function,但这是你问的问题的字面上的答案。
如果你正在编写一个你永远不想拥有一个控制台的程序,那么configuration你的项目,使它不是一个控制台程序。 “控制台”是EXE文件的一个属性。 操作系统读取该设置并决定是否在您的任何代码运行之前为您的程序分配控制台,因此无法在程序中对其进行控制。 有时候,一个非控制台程序被称为“GUI程序”,因此您可能会在开发环境的configuration选项中寻找“控制台”和“GUI”之间的select。 但是,将其设置为GUI并不要求您有任何用户界面。 该设置只是控制您的程序是否以控制台启动。
如果你正在编写一个程序,有时可以有一个控制台,有时甚至没有,那么请看一个更早的问题, 一个可执行文件既可以是一个控制台和GUI应用程序?
假设你在windows上,configuration你的连接器来做一个gui程序,而不是一个控制台程序。
- VS:查看项目属性上的链接器选项
- LINK:添加/ SUBSYSTEM:WINDOWS
- MinGW:-mwindows
#include <windows.h> #include <iostream> using namespace std; void Stealth() { HWND Stealth; AllocConsole(); Stealth = FindWindowA("ConsoleWindowClass", NULL); ShowWindow(Stealth,0); } int main() { cout<<"this sentence is visible\n"; Stealth(); //to hide console window cout<<"this sentence is not visible\n"; system("PAUSE"); return EXIT_SUCCESS; }
我曾经使用ShowWindow (GetConsoleWindow(), SW_HIDE);
在这种情况下,但是如果你不需要控制台,那么不要创build控制台应用程序项目。
如前所述,用控制台启动应用程序或不在exe中设置。 例如,使用gnu编译器,选项是-mwindows,没有控制台
g++ -mwindows winapp.c
看来这个方法
#define _WIN32_WINNT 0x0500 #include <wincon.h> .... case WM_CREATE : ShowWindow (GetConsoleWindow(), SW_HIDE);
closures所有的父控制台,所以如果从命令行控制台启动winapp.exe,这也将被closures!
你可以创build你的窗口最小化。 或者在可见屏幕外面画。
但是你也可能会混淆窗口创build标志。 如果你真的搞砸了。 开始一个新窗口通常会更好。 (或从以前的版本,或备份还原)。
为了按需从字面上隐藏/显示控制台窗口,可以使用以下function:可以使用ShowWindow来隐藏/显示控制台。 GetConsoleWindow检索控制台使用的窗口句柄。 IsWindowVisible可以用来检查一个窗口(在这种情况下控制台)是否可见。
#include <Windows.h> void HideConsole() { ::ShowWindow(::GetConsoleWindow(), SW_HIDE); } void ShowConsole() { ::ShowWindow(::GetConsoleWindow(), SW_SHOW); } bool IsConsoleVisible() { return (::IsWindowVisible(::GetConsoleWindow()) != FALSE); }