我正在运行C ++控制台应用程序,
一段时间,
我想最小化运行我的应用程序的窗口。
例如。我从cmd启动myApp.exe。然后它在新窗口中推出。
那么什么是库可以最小化运行应用程序的窗口。
应用程序没有任何GUI
答案 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不再有可写入的控制台。