如何在c ++程序运行期间隐藏控制台?

时间:2017-08-14 18:36:40

标签: c++ console g++ mingw

如何在c ++程序运行时隐藏控制台?

我的编译器:MinGw(g ++)

我尝试了很多东西,但他们没有工作:

  1. 添加-mwindows命令
  2. ShowWindow(GetConsoleWindow(), SW_HIDE);
  3. WinMain(...)
  4. 有问题的代码在这里(来自评论):

    #include <iostream> 
    #include <Windows.h> 
    
    int main() { 
      std::cout << "Recompiling compile app..."; 
      system("taskkill /IM Compile.exe"); 
      system("g++ Compile.cpp -o Compile.exe"); 
      system("Start Compile.exe"); return 0; 
    }
    

    我如何解决我的问题?

2 个答案:

答案 0 :(得分:1)

这对我有用(FreeConsole MSDN

#include <Windows.h>
// Other includes

int main(void)
{
    FreeConsole();

    // Do whatever you want here
    for (int i = 0; i < 10000; i++)
        std::cout << "You cant see me!" << std::endl;

    return 0;
}

答案 1 :(得分:1)

看起来您的问题是由调用system函数引起的,该函数默认使用控制台窗口运行。如果您需要至少一个自己的程序控制台窗口,此示例将对您有所帮助。如果您不需要任何输出,只需取消注释示例中的行。

#include <iostream> 
#include <Windows.h> 

int main() { 
  // Uncomment next line if you don't need output at all
  // FreeConsole();

  std::cout << "Recompiling compile app..."; 
  WinExec("taskkill /IM Compile.exe", SW_HIDE); 
  WinExec("g++ Compile.cpp -o Compile.exe", SW_HIDE); 
  WinExec("C:\\Path\\To\\Compile.exe", SW_HIDE); 

  return 0; 
}

您可以将其与我的旧答案结合使用,以达到预期的效果。

旧回答(对某些人可能也有帮助);

这个问题已经是answered herehere,假设您正在讨论为Windows编译C++应用。

基本上,第一个答案将帮助您在没有窗口的情况下编译窗口化应用程序,第二个答案是一个控制台应用程序,它将立即隐藏控制台窗口,尽管它会在屏幕上闪烁一秒左右。