如何在c ++程序运行时隐藏控制台?
我的编译器:MinGw(g ++)
我尝试了很多东西,但他们没有工作:
-mwindows
命令ShowWindow(GetConsoleWindow(), SW_HIDE);
WinMain(...)
有问题的代码在这里(来自评论):
#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;
}
我如何解决我的问题?
答案 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 here和here,假设您正在讨论为Windows编译C++
应用。
基本上,第一个答案将帮助您在没有窗口的情况下编译窗口化应用程序,第二个答案是一个控制台应用程序,它将立即隐藏控制台窗口,尽管它会在屏幕上闪烁一秒左右。