【问题标题】:Run application as Console app with args passed, otherwise run as Win Form app将应用程序作为控制台应用程序运行并传递参数,否则作为 Win Form 应用程序运行
【发布时间】:2012-01-11 22:12:23
【问题描述】:

我有一个应用程序,我想像这样运行:

  • 如果发送了参数 - 我希望它像控制台应用程序一样运行

  • 如果未发送参数 - 我希望它作为 Windows 窗体应用程序运行

当我将输出类型设置为控制台并且未检测到 args 时,我正在启用视觉样式并运行。它工作得很好,除了控制台窗口快速打开/关闭,这真的让我很困扰。有没有办法不显示控制台窗口?我正在寻找一种根本不创建它的方法。

【问题讨论】:

  • 我会反过来做,让它成为一个 WinForms 应用程序,因为你在创建任何东西之前就进入了代码(在 program.cs 中的 main 函数中)。
  • 你能把你的分成三个可执行文件吗?一个用于 Windows 应用程序,一个用于控制台应用程序,另一个用于引导两者之一?显然,您必须为您的引擎创建一个类库。

标签: c# winforms console-application


【解决方案1】:

我会反过来做,让它成为一个 WinForms 应用程序,因为你在创建任何东西之前就进入了代码(在你的 main 函数中的 program.cs 中)。

查看此链接:http://www.rootsilver.com/2007/08/how-to-create-a-consolewindow

【讨论】:

  • 上面的链接好像坏了。您在其他地方有可以分享的内容吗?
【解决方案2】:
  1. 创建一个 Windows.Forms 应用程序
  2. 添加外部函数

    [System.Runtime.InteropServices.DllImport( "kernel32.dll" )]
    private static extern bool AllocConsole();
    
  3. 在应用程序的 main 方法中:

    if ( windows_app )
    {
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new Form1());
    }
    else
    { 
        AllocConsole();
        Console.WriteLine( "foo" );
    }
    

【讨论】:

  • 这里的挑战是 AllocConsole() 似乎是创建一个新的控制台窗口,而不是使用运行应用程序的控制台。 “foo”会出现在新窗口中,当应用退出它的命令行调用时它会立即消失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 2015-12-08
  • 2011-01-22
相关资源
最近更新 更多