• 控制台 快速编辑模式


    /// <summary>
            /// 快速编辑模式是一种很便捷的操作方式:左键选中,右键复制以及右键从剪贴板粘贴内容等
            /// 如果鼠标选中控制台界面上的内容,控制台就被阻塞了
            /// 在Windows Server 2012 及Windowns 8以上,控制台窗口的程序默认是打开“快速编辑模式”的开关的。
            /// 注册表HKEY_CURRENT_USERConsole的QuickEdit可控制全局是否打开“快速编辑模式”模式,0:不打开,1:打开
            /// 在某些场景下,控制台打印输出的时候,不系统阻塞导致程序卡住,但是windows不能针对所有命令行统一设置,只能单个程序去设置
            /// 此时,可使用如下方式:
            /// </summary>
            public static void DisableConsoleQuickEdit()
            {
                var handle = GetStdHandle(StdHandle.InputHandle);
                uint mode;
                GetConsoleMode(handle, out mode);
                ConsoleModes newMode = (ConsoleModes)mode;
                if ((newMode & ConsoleModes.ENABLE_QUICK_EDIT_MODE) == ConsoleModes.ENABLE_QUICK_EDIT_MODE)
                    newMode ^= ConsoleModes.ENABLE_QUICK_EDIT_MODE;
                if ((newMode & ConsoleModes.ENABLE_INSERT_MODE) == ConsoleModes.ENABLE_INSERT_MODE)
                    newMode ^= ConsoleModes.ENABLE_INSERT_MODE;
                if ((newMode & ConsoleModes.ENABLE_MOUSE_INPUT) == ConsoleModes.ENABLE_MOUSE_INPUT)
                    newMode ^= ConsoleModes.ENABLE_MOUSE_INPUT;
                SetConsoleMode(handle, (uint)newMode);
            }
    
            public static bool SetConsoleFont(uint index)
            {
                return SetConsoleFont(GetStdHandle(StdHandle.OutputHandle), index);
            }
    
            [DllImport("kernel32")]
            public static extern IntPtr GetStdHandle(StdHandle index);
    
            [DllImport("kernel32.dll", SetLastError = true)]
            static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
    
            /// <summary>
            /// https://docs.microsoft.com/en-us/windows/console/setconsolemode?redirectedfrom=MSDN
            /// </summary>
            /// <param name="hConsoleHandle">控制台输入缓冲区或控制台屏幕缓冲区的句柄</param>
            /// <param name="lpMode">模式</param>
            /// <returns></returns>
            [DllImport("kernel32.dll", SetLastError = true)]
            static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
    
            [DllImport("kernel32")]
            private extern static bool SetConsoleFont(IntPtr hOutput, uint index);
    
            public enum StdHandle
            {
                OutputHandle = -11,
                InputHandle = -10,
                ErrotHandle = -12,
            }
    
            [Flags]
            private enum ConsoleModes : uint
            {
                ENABLE_PROCESSED_INPUT = 0x0001,
                ENABLE_LINE_INPUT = 0x0002,
                ENABLE_ECHO_INPUT = 0x0004,
                ENABLE_WINDOW_INPUT = 0x0008,
                ENABLE_MOUSE_INPUT = 0x0010,
                ENABLE_INSERT_MODE = 0x0020,
                ENABLE_QUICK_EDIT_MODE = 0x0040,
                ENABLE_EXTENDED_FLAGS = 0x0080,
                ENABLE_AUTO_POSITION = 0x0100,
    
                ENABLE_PROCESSED_OUTPUT = 0x0001,
                ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002,
                ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004,
                DISABLE_NEWLINE_AUTO_RETURN = 0x0008,
                ENABLE_LVB_GRID_WORLDWIDE = 0x0010
            }
  • 相关阅读:
    数据仓库--事实表
    Oracle SQL函数pivot、unpivot转置函数实现行转列、列转行
    在Oracle中使用rank()over()排名的问题
    python 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。(用列表推导式)
    pyhton 打印菱形
    三元运算
    Python代码书写规范
    DDT驱动
    使用 JsonPath 完成接口自动化测试中参数关联和数据验证(Python语言)
    数据类型(字典)
  • 原文地址:https://www.cnblogs.com/lcawen/p/12742916.html
Copyright © 2020-2023  润新知