代码之家  ›  专栏  ›  技术社区  ›  Tom Wright

如何修改我的WinForms应用程序以在控制台中运行?

  •  3
  • Tom Wright  · 技术社区  · 14 年前

    我有一个用C语言编写的.NET WinForms应用程序。为了支持批处理操作,我现在想让应用程序能够在控制台中运行。

    是否可以让一个应用程序在启动时检测它是否在控制台中运行?

    为了实现这种行为,我需要做什么修改?

    3 回复  |  直到 14 年前
        1
  •  8
  •   CodingGorilla    14 年前

    您的解决方案中应该有一个program.cs文件,该文件包含:

    static void Main() 
    {
    }
    

    您会注意到,在这种方法中有如下内容:

    Application.Run(new Form1());
    

    这是表单的实际启动位置,因此您可以修改 Main() 像这样的事情:

    static void Main(string[] args)
    {
       if(args.Length < 1)
       {
          Application.Run(new Form1());
          return;
       }
       else
       {
         // Handle your command line arguments and do work
       }
    }
    

    因此,如果在没有命令行参数的情况下调用程序,Windows窗体将弹出并执行其操作。否则,您将通过命令行执行需要执行的操作,然后退出,而不显示窗体。

        2
  •  2
  •   Hans Olsson    14 年前

    您可以使用 AllocConsole 功能。你可以在Pinvoke上找到更多关于如何从C呼叫这个的信息。 page .

    然而,这不会使它成为一个真正的控制台应用程序,我听说有一些限制,但是,它可能工作取决于您的确切需要。

        3
  •  1
  •   BlackICE    14 年前

    您可以使用program.cs中的一个主要方法来检测是否传入了命令行参数,如果这些参数进行批处理,如果不显示GUI。

    public static void Main(string[] args)
    {
     if (args.count > 0) {
      //batch
     } else {
      //gui
     }
    
    }