控制台应用程序也将 运行 作为 GUI
Console Application to be run as GUI as well
Before anyone marks this as Duplicate, Please read
我有一个 Windows Application
的进程,是用 C# 编写的。
现在我有一个要求,我也想从控制台 运行 这个。像这样。
因为我需要向控制台显示输出,所以我将应用程序类型更改为 Console Application
现在的问题是,每当用户从 Windows 资源管理器(通过双击)启动进程时。控制台window也在后面打开。
有没有办法避免这种情况?
在@PatrickHofman 的帮助下我尝试了什么。
- 已关注 how to run a winform from console application?
但是我还有问题
当我执行此操作时 ,控制台会在新 window 中打开。我不想那样。
当我这样做,即将-1
传递给AllocConsole
时,还会出现其他问题,如参考link中所述.
好吧,我觉得我会玩这个,因为我很好奇。
- 首先,我更新了
Program.cs
中的 Main
方法以获取参数,因此我可以指定 -cli
并在命令行上将应用程序设置为 运行。
- 其次,我在项目属性中将项目的输出类型更改为 "console application"。
第三我在Program.cs
中添加了以下方法
private static void HideConsoleWindow()
{
var handle = GetConsoleWindow();
ShowWindow(handle, 0);
}
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
第四个我调用HideConsoleWindow
作为非CLI模式下的第一个动作
完成这些步骤后,我的(基本)应用程序如下所示:
[STAThread]
static void Main(string[] args)
{
if (args.Any() && args[0] == "-cli")
{
Console.WriteLine("Console app");
}
else
{
HideConsoleWindow();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
然后,如果我使用 -cli
在命令行上打开程序,将它 运行 作为命令行应用程序并将内容打印到命令行,如果我 运行 它通常会加载命令行 window(非常)短暂,然后如您所料作为普通应用程序加载。
Before anyone marks this as Duplicate, Please read
我有一个 Windows Application
的进程,是用 C# 编写的。
现在我有一个要求,我也想从控制台 运行 这个。像这样。
因为我需要向控制台显示输出,所以我将应用程序类型更改为 Console Application
现在的问题是,每当用户从 Windows 资源管理器(通过双击)启动进程时。控制台window也在后面打开。
有没有办法避免这种情况?
在@PatrickHofman 的帮助下我尝试了什么。
- 已关注 how to run a winform from console application?
但是我还有问题
当我执行此操作时 ,控制台会在新 window 中打开。我不想那样。
当我这样做,即将
-1
传递给AllocConsole
时,还会出现其他问题,如参考link中所述.
好吧,我觉得我会玩这个,因为我很好奇。
- 首先,我更新了
Program.cs
中的Main
方法以获取参数,因此我可以指定-cli
并在命令行上将应用程序设置为 运行。 - 其次,我在项目属性中将项目的输出类型更改为 "console application"。
第三我在Program.cs
中添加了以下方法private static void HideConsoleWindow() { var handle = GetConsoleWindow(); ShowWindow(handle, 0); } [DllImport("kernel32.dll")] static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
第四个我调用
HideConsoleWindow
作为非CLI模式下的第一个动作
完成这些步骤后,我的(基本)应用程序如下所示:
[STAThread]
static void Main(string[] args)
{
if (args.Any() && args[0] == "-cli")
{
Console.WriteLine("Console app");
}
else
{
HideConsoleWindow();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
然后,如果我使用 -cli
在命令行上打开程序,将它 运行 作为命令行应用程序并将内容打印到命令行,如果我 运行 它通常会加载命令行 window(非常)短暂,然后如您所料作为普通应用程序加载。