diff --git a/ModelingMusic/MusicFrom.cs b/ModelingMusic/MusicFrom.cs index cfa47a7..b4bd383 100644 --- a/ModelingMusic/MusicFrom.cs +++ b/ModelingMusic/MusicFrom.cs @@ -38,30 +38,17 @@ public class MusicFrom public MusicFrom() { - // 获取标准输入句柄 - IntPtr hStdin = GetStdHandle(STD_INPUT_HANDLE); - - // 获取当前控制台输入模式 - uint mode; - if (!GetConsoleMode(hStdin, out mode)) - { - Console.WriteLine("无法获取控制台输入模式"); - return; - } - - // 禁用回显和行输入 - mode &= ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT); - if (!SetConsoleMode(hStdin, mode)) - { - Console.WriteLine("无法设置控制台输入模式"); - return; - } setCharArry(); MaxY = Program.chars.GetLength(0); MaxX = Program.chars.GetLength(1); new Thread(PrintCharArray).Start(); new Thread(KeyboardMapping).Start(); new Thread(Run).Start(); + + // 恢复控制台输入模式 + // mode |= ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT; + // SetConsoleMode(hStdin, mode); + } public void Run() @@ -127,6 +114,24 @@ public class MusicFrom public void PrintCharArray() { + // 获取标准输入句柄 + IntPtr hStdin = GetStdHandle(STD_INPUT_HANDLE); + + // 获取当前控制台输入模式 + uint mode; + if (!GetConsoleMode(hStdin, out mode)) + { + Console.WriteLine("无法获取控制台输入模式"); + return; + } + + // 禁用回显和行输入 + mode &= ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT); + if (!SetConsoleMode(hStdin, mode)) + { + Console.WriteLine("无法设置控制台输入模式"); + return; + } var stopwatch = new Stopwatch(); int frameCount = 0; double totalTime = 0; @@ -135,7 +140,6 @@ public class MusicFrom var a = Program.chars.GetLength(0); var b = Program.chars.GetLength(1); var buffer = new StringBuilder(); - ConsoleColor xiantiaoColor = Program.random.Next(0, 2) == 0 ? ConsoleColor.Red : ConsoleColor.Blue;//线条的颜色 while (Program.IsWhile) { stopwatch.Restart(); @@ -146,9 +150,6 @@ public class MusicFrom { for (j = 0; j < b; j++) { - //Console.ForegroundColor = Program.chars[i, j].Color; - //Console.Write($" {Program.chars[i, j].Char} "); - buffer.Append(Program.chars[i, j].Char); time++; if (time > 100000) @@ -225,6 +226,9 @@ public class MusicFrom //这样闪烁不会太严重 Thread.Sleep(50); } + // 恢复控制台输入模式 + mode |= ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT; + SetConsoleMode(hStdin, mode); } private void setCharArry() { diff --git a/Program.cs b/Program.cs index e29f603..47d3ef8 100644 --- a/Program.cs +++ b/Program.cs @@ -1,5 +1,4 @@ -using System.Runtime.InteropServices; -using System.Text; +using System.Text; using Debug.ModelingMusic; namespace Debug; ///