【c#】使用Win32API控制台程序的显示和隐藏
大家好,又见面了,我是你们的朋友全栈君。
在项目开发的过程中,为了方便调试,利用控制台打印出一些提示信息,当安装到现场的时候,我们担心工作人员手误关掉了程序,所以将控制台隐藏,让程序在后台跑。下面是具体的显示和隐藏的代码:
/// <summary>
/// 控制台帮助类
/// </summary>
public static class ConsoleHelper
{
/// <summary>
/// 获取窗口句柄
/// </summary>
/// <param name="lpClassName"></param>
/// <param name="lpWindowName"></param>
/// <returns></returns>
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
/// <summary>
/// 设置窗体的显示与隐藏
/// </summary>
/// <param name="hWnd"></param>
/// <param name="nCmdShow"></param>
/// <returns></returns>
[DllImport("user32.dll", SetLastError = true)]
private static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);
/// <summary>
/// 隐藏控制台
/// </summary>
/// <param name="ConsoleTitle">控制台标题(可为空,为空则取默认值)</param>
public static void hideConsole(string ConsoleTitle = "")
{
ConsoleTitle = String.IsNullOrEmpty(ConsoleTitle) ? Console.Title : ConsoleTitle;
IntPtr hWnd = FindWindow("ConsoleWindowClass", ConsoleTitle);
if (hWnd != IntPtr.Zero)
{
ShowWindow(hWnd, 0);
}
}
/// <summary>
/// 显示控制台
/// </summary>
/// <param name="ConsoleTitle">控制台标题(可为空,为空则去默认值)</param>
public static void showConsole(string ConsoleTitle = "")
{
ConsoleTitle = String.IsNullOrEmpty(ConsoleTitle) ? Console.Title : ConsoleTitle;
IntPtr hWnd = FindWindow("ConsoleWindowClass", ConsoleTitle);
if (hWnd != IntPtr.Zero)
{
ShowWindow(hWnd, 1);
}
}
/// <summary>
/// 最小化控制台
/// </summary>
/// <param name="ConsoleTitle">控制台标题(可为空,为空则去默认值)</param>
public static void minConsole(string ConsoleTitle = "")
{
ConsoleTitle = String.IsNullOrEmpty(ConsoleTitle) ? Console.Title : ConsoleTitle;
IntPtr hWnd = FindWindow("ConsoleWindowClass", ConsoleTitle);
if (hWnd != IntPtr.Zero)
{
ShowWindow(hWnd, 2);
}
}
}
分析代码我们可以看出,控制显示和隐藏的关键代码是
ShowWindow(hWnd, nCmdShow);
参数nCmdShow说明
为0:隐藏;
为1:显示;
为2:最小化。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105675.html原文链接:https://javaforall.cn
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/18400534
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!