【问题标题】:GCC / C how to hide console window?GCC/C如何隐藏控制台窗口?
【发布时间】: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() 的应用程序正常工作。

【问题讨论】:

    标签: c windows gcc console


    【解决方案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:谢谢,这更接近我的需要 :)
    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2011-07-19
    • 2014-11-10
    • 1970-01-01
    • 2014-08-23
    • 2012-08-02
    相关资源
    最近更新 更多