如何最小化控制台窗口?

时间:2014-05-07 10:12:08

标签: c++ windows console

我正在运行C ++控制台应用程序, 一段时间,
我想最小化运行我的应用程序的窗口。
例如。我从cmd启动myApp.exe。然后它在新窗口中推出。
那么什么是库可以最小化运行应用程序的窗口。
应用程序没有任何GUI

2 个答案:

答案 0 :(得分:10)

我认为您的应用程序在Windows上运行(这不能在不同的操作系统上移植)。

您首先要使用GetConsoleWindow()功能处理控制台窗口,然后您可以使用ShowWindow()隐藏/显示所需内容。别忘了包括windows.h

ShowWindow(GetConsoleWindow(), SW_MINIMIZE);

您可以使用SW_MINIMIZE来完全隐藏它(而不是SW_HIDE,而是在应用程序刚刚启动时会闪现一次。

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

更新:作为Patrick's answer的后续内容,您可以将子系统从控制台更改为Windows,然后,如果您需要写入控制台,请使用{{3创建一个新的子系统}}:

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

答案 1 :(得分:1)

另一种选择是改变

属性... |配置属性|链接器|系统|子系统

控制台 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不再有可写入的控制台。