瀏覽代碼

禁用快速编辑模式

陈国伟 3 年之前
父節點
當前提交
128bf5e58d
共有 2 個文件被更改,包括 45 次插入0 次删除
  1. 44 0
      FastGithub/ConsoleUtil.cs
  2. 1 0
      FastGithub/Program.cs

+ 44 - 0
FastGithub/ConsoleUtil.cs

@@ -0,0 +1,44 @@
+using System;
+using System.Runtime.InteropServices;
+using System.Runtime.Versioning;
+
+namespace FastGithub
+{
+    static class ConsoleUtil
+    {
+        private const uint ENABLE_QUICK_EDIT = 0x0040;
+
+        private const int STD_INPUT_HANDLE = -10;
+
+        [DllImport("kernel32.dll", SetLastError = true)]
+        [SupportedOSPlatform("windows")]
+        private static extern IntPtr GetStdHandle(int nStdHandle);
+
+        [DllImport("kernel32.dll", SetLastError = true)]
+        [SupportedOSPlatform("windows")]
+        private static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
+
+        [DllImport("kernel32.dll", SetLastError = true)]
+        [SupportedOSPlatform("windows")]
+        private static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
+
+        /// <summary>
+        /// 禁用快速编辑模式
+        /// </summary>
+        /// <returns></returns>
+        public static bool DisableQuickEdit()
+        {
+            if (OperatingSystem.IsWindows())
+            {
+                var hwnd = GetStdHandle(STD_INPUT_HANDLE);
+                if (GetConsoleMode(hwnd, out uint mode))
+                {
+                    mode &= ~ENABLE_QUICK_EDIT;
+                    return SetConsoleMode(hwnd, mode);
+                }
+            }
+
+            return false;
+        }
+    }
+}

+ 1 - 0
FastGithub/Program.cs

@@ -17,6 +17,7 @@ namespace FastGithub
         /// <param name="args"></param>
         public static void Main(string[] args)
         {
+            ConsoleUtil.DisableQuickEdit();
             CreateHostBuilder(args).Build().Run();
         }