关闭应用程序而不显示控制台窗口

Closing Application without showing console window

本文关键字:显示 控制台 窗口 应用程序      更新时间:2023-10-16

我编写了非常简单的控制台应用程序,它支持一些命令行选项。如果没有命令行参数(这意味着只有 1 个参数)应用程序关闭而不显示黑窗,目前如果您运行下面的代码,因为它没有命令行参数,它会立即关闭,但它会显示黑窗一秒钟,我想避免它。那么我怎样才能以简单的方式做到这一点呢?

#include <iostream>
using namespace std;
int main(int argc,char** argv)
{
    if (argc==1) return 0;
    if (argc!=1)
    for (int i=2; i<=argc; i++)
        cout << argv[i] << endl;
    cin.sync();cin.get();
    return 0;
} 

如果创建控制台应用程序,则无法从控制台窗口创建中转义。

但是您可以使用入口点WinMain创建win32应用程序,并且没有创建窗口,只需用作控制台程序即可。

要使程序运行,Windows需要一个控制台窗口。创建控制台窗口后,控件将进入 main。只有在 main 中,您才能检查命令行参数。这意味着,不可能做你想做的事。

但是,您可以使用 CreateProcess API 在不显示控制台窗口的情况下运行程序。因此,如果可以从另一个程序运行控制台应用程序,则可以检查是否存在命令行参数,然后决定是否应使用 CreateProcess 显示控制台窗口。

若要不使用 CreateProcess 显示控制台窗口,请将 STARTUPINFOdwFlags 参数设置为 STARTF_USESHOWWINDOW,并在 wShowWindow 参数中指定SW_HIDE。