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如何隐藏控制台窗口?的主要内容,如果未能解决你的问题,请参考以下文章