C# 通过参数以控制台应用程序的形式运行应用程序,否则以Win Form应用程序的形式运行
我有一个应用程序,我想这样运行:C# 通过参数以控制台应用程序的形式运行应用程序,否则以Win Form应用程序的形式运行,c#,winforms,console-application,C#,Winforms,Console Application,我有一个应用程序,我想这样运行: 如果args已发送-我希望它表现为控制台应用程序 如果未发送参数-我希望它作为windows窗体应用程序运行 当我将输出类型设置为console并且未检测到args时,我正在启用视觉样式并运行。它工作得很好,除了控制台窗口打开/关闭很快,这让我很烦恼。有没有办法不让控制台窗口出现?我正在寻找一种根本不创建它的方法。我会用另一种方法,让它成为一个WinForms应用程序,因为在创建任何东西之前(在program.cs的主函数中)就已经开始编写代码了 请参阅此链
- 如果args已发送-我希望它表现为控制台应用程序
- 如果未发送参数-我希望它作为windows窗体应用程序运行
当我将输出类型设置为console并且未检测到args时,我正在启用视觉样式并运行。它工作得很好,除了控制台窗口打开/关闭很快,这让我很烦恼。有没有办法不让控制台窗口出现?我正在寻找一种根本不创建它的方法。我会用另一种方法,让它成为一个WinForms应用程序,因为在创建任何东西之前(在program.cs的主函数中)就已经开始编写代码了 请参阅此链接:
[System.Runtime.InteropServices.DllImport( "kernel32.dll" )]
private static extern bool AllocConsole();
if ( windows_app )
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
else
{
AllocConsole();
Console.WriteLine( "foo" );
}
我会反过来做,让它成为一个WinForms应用程序,因为在创建任何东西之前(在
program.cs
中的main
函数中),你就已经开始编写代码了。你能把你的应用程序分成三个可执行文件吗?一个用于windows应用程序,一个用于console应用程序,另一个用于启动这两个应用程序中的一个?显然,您必须为引擎创建一个类库。上面的链接似乎已断开。您在其他地方有可以共享的内容吗?这里的挑战是AllocConsole()似乎要创建一个新的控制台窗口,而不是使用运行应用程序的控制台。“foo”将出现在新窗口中,当应用程序退出其命令行调用时,该窗口立即消失。