我在谷歌上搜索如何隐藏自己的控制台窗口的信息。令人惊讶的是,我能找到的唯一解决方案是使用FindWindow()根据标题查找控制台窗口的俗气解决方案。我深入研究了一下Windows API,发现有一种更好更简单的方法,所以我想把它贴在这里,让其他人找到。
如何隐藏(并显示)与我自己的c#控制台应用程序相关联的控制台窗口?
我在谷歌上搜索如何隐藏自己的控制台窗口的信息。令人惊讶的是,我能找到的唯一解决方案是使用FindWindow()根据标题查找控制台窗口的俗气解决方案。我深入研究了一下Windows API,发现有一种更好更简单的方法,所以我想把它贴在这里,让其他人找到。
如何隐藏(并显示)与我自己的c#控制台应用程序相关联的控制台窗口?
当前回答
如果想隐藏控制台本身,为什么还需要控制台应用程序呢?=)
我建议将项目输出类型设置为Windows应用程序,而不是控制台应用程序。它不会显示控制台窗口,而是像控制台应用程序一样执行所有操作。
其他回答
“只是为了隐藏”你可以:
将输出类型从控制台应用程序更改为Windows应用程序,
而不是主机。你可以在最后使用new ManualResetEvent(false). waitone()来保持应用程序运行。
如果想隐藏控制台本身,为什么还需要控制台应用程序呢?=)
我建议将项目输出类型设置为Windows应用程序,而不是控制台应用程序。它不会显示控制台窗口,而是像控制台应用程序一样执行所有操作。
如果你不想依赖于窗口标题,请使用以下方法:
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
...
IntPtr h = Process.GetCurrentProcess().MainWindowHandle;
ShowWindow(h, 0);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormPrincipale());
只需转到应用程序的属性,并将输出类型从控制台应用程序更改为Windows应用程序。
请看我的帖子:
在Windows应用程序中显示控制台
您可以创建一个Windows应用程序(带或不带窗口)并根据需要显示控制台。使用此方法,控制台窗口永远不会出现,除非显式地显示它。我将它用于双模式应用程序,我想在控制台或gui模式下运行,这取决于它们是如何打开的。