我搜索了有关如何隐藏自己的控制台窗口的信息.令人惊讶的是,我能找到的唯一解决方案是通过其标题FindWindow()找到控制台窗口的 hacky解决方案.我深入挖掘了Windows API,发现有更好更简单的方法,所以我想在这里发布,供其他人查找.
如何隐藏(和显示)与我自己的C#控制台应用程序关联的控制台窗口?
我想要发生的事情是控制台窗口消失了,或者更好,但它是隐藏的,但我希望我的应用程序继续运行.那可能吗?我希望能够使用Console.WriteLine并将控制台用作输出窗口.我希望能够隐藏和显示它,并且我不希望整个应用程序因为控制台关闭而死亡.
编辑
码:
internal class SomeClass {
[DllImport("kernel32")]
private static extern bool AllocConsole();
private static void Main() {
AllocConsole();
while(true) continue;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑2
我根据这个问题的评论中的建议尝试了这里接受的解决方案[ Capture console exit C# ].示例代码的错误在于DLLImport需要是"kernel32.dll"或"kernel32",而不是"Kernel32".进行更改后,当我单击控制台窗口上的X时,我正在向CTRL_CLOSE_EVENT的处理程序发送消息.但是,调用FreeConsole和/或返回true并不会阻止应用程序终止.