【问题标题】:Closing Application without showing console window关闭应用程序而不显示控制台窗口
【发布时间】:2012-06-21 14:28:12
【问题描述】:

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

【问题讨论】:

  • 谢谢。在这种情况下,只需创建一个启动控制台的 GUI 子系统程序。然后在资源管理器中可以运行 GUI 子系统之一。视觉工作室是这样的,虽然相反。有一个 [devenv.com] 启动 [devenv.exe],位于同一文件夹中。
  • 用户犯了错误。有帮助,显示命令行使用帮助。

标签: c++ windows command-line-arguments


【解决方案1】:

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

但是你可以用入口点WinMain创建win32应用程序,并且不创建窗口,只是作为控制台程序工作。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      相关资源
      最近更新 更多