如何在Windows 11中隐藏控制台

3

我写了一个应该在后台运行的程序。我尝试编写一些代码,但它们都不起作用。控制台在Windows 10中被隐藏,但在版本11中无法工作。我正在使用这个编译器x86_64-w64-mingw32-gcc。

我正在尝试使用这段代码:

ShowWindow(GetConsoleWindow(), SW_HIDE)

然后我尝试了这段代码,但结果仍然相同:

AllocConsole();
ShowWindow(FindWindowA("ConsoleWindowClass", NULL), 0);

然后我尝试了这段代码,但结果仍然相同:

ShowWindow(GetConsoleWindow(),0);

3
你的编译器和构建环境是什么?如果你使用的是Visual Studio(完整的IDE,而不是VSCode编辑器),那么你创建了一个WIN32项目还是控制台项目?你应该创建一个WIN32项目以避免一开始出现控制台。如果你使用另一个环境例如GCC,那么你必须为Windows子系统构建,否则你会默认创建一个控制台程序。 - Some programmer dude
尝试使用FreeConsole - Richard Critten
1
你是真的想要一个控制台,但是(动态地)显示和隐藏它,还是根本不想要控制台?答案会有所不同。此外,如果你想让某些东西在后台运行,请考虑编写一个服务 - IInspectable
4
在代码中不需要做任何更改。连接时传递“-mwindows”即可。 - HolyBlackCat
1
构建一个 Windows 应用程序(或服务),而不是控制台应用程序。 - Jesper Juhl
显示剩余3条评论
2个回答

2

1
根据这篇帖子:https://github.com/microsoft/terminal/issues/15311,像ShowWindow(GetConsoleWindow(), SW_HIDE)这样的方法不起作用。我找到的解决办法是改变我们运行应用程序的方式。
在Windows 11上,解决方案1 使用conhost:
conhost C:\path\to\your\app.exe

这对我来说效果不错。然而,如果你将其创建为桌面快捷方式,防病毒软件可能会阻止它。

解决方案2

使用 PowerShell:

Start-Process "C:\path\to\your\app.exe" -WindowStyle Hidden

如果你想的话,你可以把这个放在一个 .bat 文件中:

@echo off
powershell.exe -Command "Start-Process 'C:\path\to\your\app.exe' -WindowStyle Hidden"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接