【c#】使用Win32API控制台程序的显示和隐藏

大家好,又见面了,我是你们的朋友全栈君。

在项目开发的过程中,为了方便调试,利用控制台打印出一些提示信息,当安装到现场的时候,我们担心工作人员手误关掉了程序,所以将控制台隐藏,让程序在后台跑。下面是具体的显示和隐藏的代码:

代码语言:C#
复制
        /// <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);
                }
            }

        }

分析代码我们可以看出,控制显示和隐藏的关键代码是

代码语言:C#
复制
ShowWindow(hWnd, nCmdShow);

参数nCmdShow说明

为0:隐藏;
为1:显示;
为2:最小化。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105675.html原文链接:https://javaforall.cn

 

出处:https://javaforall.cn/105675.html

posted on 2024-09-06 16:40  jack_Meng  阅读(41)  评论(0编辑  收藏  举报

导航