2012-06-19 130 views
2

我已经写了支持一些命令行选项,非常非常简单的控制台应用程序。 如果没有命令行参数(这意味着只有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; 
} 
+1

哪个操作系统? ░░░░░ –

+0

它现在被添加,Windows。 – Nofuzy

+1

谢谢。在这种情况下,只需创建一个启动控制台的GUI子系统程序即可。那么在资源管理器中可以运行一个GUI子系统。视觉工作室就是这样,尽管其他方式。有一个[devenv.com]启动[devenv.exe],位于同一个文件夹中。 –

回答

2

如果创建控制台应用程序你不能从控制台窗口创建逃脱。

但是你可以创建一个切入点WinMain的Win32应用程序有没有创建窗口,只是工作的控制台程序。

2

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

但是,您可以在不显示控制台窗口的情况下使用CreateProcess API运行程序。所以,如果你可以运行其他程序的控制台应用程序,那么你可以检查是否有命令行参数,然后再决定是否应该使用的CreateProcess显示控制台窗口或没有。

不显示使用的CreateProcess控制台窗口中,设置的的dwFlags参数STARTUPINFO到STARTF_USESHOWWINDOW并在wShowWindow参数指定SW_HIDE。

相关问题