zoukankan      html  css  js  c++  java
  • c# 隐藏 控制台应用程序

    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
        }
    }
  • 相关阅读:
    如何让elementui 侧边栏的高度站整个屏幕
    渐变色 + 屏幕缩小自动产生滚动条
    css写一条线 鼠标悬浮的时候从中间向两边延申
    vue路由之间带参数跳转params与query的区别
    Oracle_11g_x64的安装与完全卸载
    类型不匹配 java.lang.IllegalArgumentException : argument type mismatch
    java.io.NotSerializableException 没有序列化异常
    MyBatis 面试题
    Navicat连接远程主机(腾讯云服务器)的mysql失败,解决(为需要远程登录的用户赋予权限)
    如何把web项目部署到Linux云服务器(详细流程)
  • 原文地址:https://www.cnblogs.com/wjshan0808/p/4230355.html
Copyright © 2011-2022 走看看