GCC/C如何隐藏控制台窗口?

Posted

技术标签:

【中文标题】GCC/C如何隐藏控制台窗口?【英文标题】:GCC / C how to hide console window? 【发布时间】:2010-10-10 12:21:20 【问题描述】:

****C 新手警告**** 如何编译 C 应用程序,使其在 Windows 上不显示控制台窗口的情况下运行?我正在使用 Windows XP 和 GCC 3.4.5(mingw-vista special r3)。我已经用谷歌搜索了这个,我想出了以下内容,根据我读过的内容,听起来它应该可以解决问题,但在我的系统上没有:

#include <windows.h>
#include <stdlib.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

    system("start notepad.exe");

我也尝试将“-mwindows”参数传递给 GCC,但无济于事。代码示例会启动记事本,但仍会显示命令提示符。

编辑:FWIW 我也尝试过将 ShellExecute 作为 system() 的替代品,尽管此时我什至很乐意让一个带有空 main() 或 WinMain() 的应用程序正常工作。

【问题讨论】:

【参考方案1】:

保留 -mwindows 标志并使用它:

#include <windows.h>
#include <process.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

    execl("c:\\winnt\\system32\\notepad.exe", 0);
    // or: execlp("notepad.exe", 0);

注意:您需要execl() 调用的完整路径,而不是execlp() 调用的完整路径。

编辑: 简要说明其工作原理 - 使用 system() 启动一个 shell(如 cmd.exe)来执行生成控制台窗口的命令。使用 execl 不会。

【讨论】:

啊,也感谢您的编辑 - 我认为它是这样的。 (+2 按钮在哪里?;-) 如果使用 execlp(),则不需要完整路径。 Pax:谢谢,这更接近我的需要 :)

以上是关于GCC/C如何隐藏控制台窗口?的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中隐藏控制台窗口?

如何隐藏 C 程序的控制台窗口?

如何隐藏随我的应用程序打开的控制台窗口?

当我使用 pytesseract 和 CREATE_NO_WINDOW 运行 tesseract 时如何隐藏控制台窗口

如何在隐藏控制台的情况下运行 C# 控制台应用程序

通过 C++ 运行命令时隐藏控制台窗口