using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Runtime.InteropServices; namespace HideConsole { class Program { static void Main(string[] args) { Console.Title = "HideConsole"; IntPtr hwnd = FindWindow(null, Console.Title); if (hwnd != IntPtr.Zero) ShowWindow(hwnd, CmdShow.SW_HIDE); //Process p = new Process(); /////cmd 名称 //p.StartInfo.FileName = Process.GetCurrentProcess().MainModule.ModuleName; //p.StartInfo.CreateNoWindow = true; //p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; Console.WriteLine("控制台应用程序隐藏DOS界面"); Console.ReadKey(); } #region WinAPI /// <summary> /// Sets the specified window‘s show state. /// </summary> /// <param name="hWnd">A handle to the window.</param> /// <param name="nCmdShow">Controls how the window is to be shown. This parameter is ignored the first time an application calls ShowWindow, if the program that launched the application provides a STARTUPINFO structure. Otherwise, the first time ShowWindow is called, the value should be the value obtained by the WinMain function in its nCmdShow parameter. In subsequent calls</param> /// <returns></returns> [DllImport("User32.dll", EntryPoint = "ShowWindow")] private static extern bool ShowWindow(IntPtr hWnd, CmdShow nCmdShow); /// <summary> /// Retrieves a handle to the top-level window whose class name and window name match the specified strings. This function does not search child windows. This function does not perform a case-sensitive search. /// </summary> /// <param name="lpClassName">The class name or a class atom created by a previous call to the RegisterClass or RegisterClassEx function. The atom must be in the low-order word of lpClassName; the high-order word must be zero. /// If lpClassName points to a string, it specifies the window class name. The class name can be any name registered with RegisterClass or RegisterClassEx, or any of the predefined control-class names. /// If lpClassName is NULL, it finds any window whose title matches the lpWindowName parameter.</param> /// <param name="lpWindowName">The window name (the window‘s title). If this parameter is NULL, all window names match.</param> /// <returns>If the function succeeds, the return value is a handle to the window that has the specified class name and window name. ///If the function fails, the return value is NULL.</returns> [DllImport("user32.dll")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); #endregion } /// <summary> /// http://msdn.microsoft.com/en-us/library/ms633548(VS.85).aspx /// </summary> public enum CmdShow : int { /// <summary> /// Hides the window and activates another window. /// </summary> SW_HIDE = 0, /// <summary> /// Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when displaying the window for the first time. /// </summary> SW_SHOWNORMAL = 1, /// <summary> /// Activates the window and displays it as a minimized window. /// </summary> SW_SHOWMINIMIZED = 2, /// <summary> /// Activates the window and displays it as a maximized window. /// </summary> SW_SHOWMAXIMIZED = 3, /// <summary> /// Displays a window in its most recent size and position. This value is similar to SW_SHOWNORMAL, except that the window is not activated. /// </summary> SW_SHOWNOACTIVATE = 4, /// <summary> /// Activates the window and displays it in its current size and position. /// </summary> SW_SHOW = 5, /// <summary> /// Minimizes the specified window and activates the next top-level window in the Z order. /// </summary> SW_MINIMIZE = 6, /// <summary> /// Displays the window as a minimized window. This value is similar to SW_SHOWMINIMIZED, except the window is not activated. /// </summary> SW_SHOWMINNOACTIVE = 7, /// <summary> /// Displays the window in its current size and position. This value is similar to SW_SHOW, except that the window is not activated. /// </summary> SW_SHOWNA = 8, /// <summary> /// Activates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized window. /// </summary> SW_RESTORE = 9, /// <summary> /// Sets the show state based on the SW_ value specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. /// </summary> SW_SHOWDEFAULT = 10, /// <summary> /// Minimizes a window, even if the thread that owns the window is not responding. This flag should only be used when minimizing windows from a different thread. /// </summary> SW_FORCEMINIMIZE = 11 } }