我编写了非常简单的控制台应用程序,它支持一些命令行选项。 如果没有命令行参数(这意味着只有一个参数)应用程序关闭而不显示黑色窗口,当前如果您运行下面的代码,因为它没有命令行参数,它将立即关闭,但它将显示黑色的窗口一秒钟,我想避免它。那么我怎样才能以简单的方式做到这一点?
#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;
}
答案 0 :(得分:2)
要运行程序,Windows需要一个控制台窗口。创建控制台窗口后,控件进入main。只有在main内部才能检查命令行参数。这意味着,不可能做你想做的事。
但是,您可以在不使用 CreateProcess API显示控制台窗口的情况下运行程序。因此,如果您可以从另一个程序运行控制台应用程序,那么您可以检查是否存在命令行参数,然后决定是否应该使用 CreateProcess 来显示控制台窗口。
要使用 CreateProcess 不显示控制台窗口,请将 STARTUPINFO 的 dwFlags 参数设置为STARTF_USESHOWWINDOW,并在 wShowWindow中指定SW_HIDE 参数。
答案 1 :(得分:2)
如果您创建控制台应用程序,则无法逃脱控制台窗口创建。
但您可以使用入口点WinMain创建 win32应用程序,并且不会创建窗口,只需作为控制台程序工作。