如何最小化控制台窗口

How to minimize console window?

本文关键字:窗口 控制台 最小化      更新时间:2023-10-16

我正在运行一个c++控制台应用程序,有一段时间,
我想最小化我的应用程序正在运行的窗口。如
。我从cmd启动myApp.exe。然后在新窗口中启动。那么,哪些库可以最小化应用程序运行的窗口呢?
应用程序没有任何GUI

我想你的应用程序是在Windows上运行的(这在不同的操作系统之间是不可移植的)。

你必须首先用GetConsoleWindow()函数获得控制台窗口的句柄,然后你可以使用ShowWindow()来隐藏/显示它。别忘了包括windows.h:

ShowWindow(GetConsoleWindow(), SW_MINIMIZE);

代替SW_MINIMIZE,你可以使用SW_HIDE来完全隐藏它(但它会在应用程序刚刚启动时闪烁可见)。

注意,如果您可以控制进程的创建,您可以将其创建为DETACHED_PROCESS:分离的控制台应用程序没有控制台窗口。CreateProcess()函数还有其他您可能感兴趣的解决方法(例如,您可以创建用于输出…的子进程)

UPDATE:作为Patrick的回答的后续,你可以将子系统从Console更改为Windows,然后,如果你需要写控制台,使用AllocConsole创建一个新的:

if (AllocConsole()) {
    printf("Now I can print to console...n");
    FreeConsole();
}

另一个选择是更改

属性……|配置属性|链接器|系统|子系统从<<p> strong>控制台, Windows 。但是,您需要添加一个WinMain()入口点,例如:

  int __stdcall WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
  { int argc = 0;
    LPWSTR* argv = CommandLineToArgvW(GetCommandLine(), &argc);    
    return Main(argc, argv);
  }

假设unicode。为了避免混淆,我将控制台的wmain()函数重命名为类似Main()的东西,如上所述。当然,printf不再有可写入的控制台。