控制台的Ctrl-S不工作.它似乎在等待输入
本文关键字:在等待 输入 工作 Ctrl-S 控制台 | 更新日期: 2023-09-27 18:11:29
我试图使一个控制台应用程序在 c# 。当使用Console.ReadKey
并键入Ctrl + S时,应用程序似乎在"等待"另一个按键,因为下一个键I类型也被吃掉了。
我怎样才能防止这种情况的发生?
经过一番挖掘,我能弄清楚如何做到这一点的唯一方法是调用一些本地方法来禁用ENABLE_LINE_INPUT
。我不知道为什么这会起作用,因为ENABLE_LINE_INPUT
的文档说:
ReadFile或ReadConsole函数只在读取回车符时返回。如果此模式被禁用,当有一个或多个字符可用时,函数返回。
看起来不太相关。特别是因为ReadKey
无论如何都不会等待return
。
也许其他人能解释得更好?
代码:int mode = 0;
GetConsoleMode(handle, ref mode);
mode &= ~0x0002; // Disable ENABLE_LINE_INPUT. Lets ctrl-s work for some reason.
SetConsoleMode(handle, mode);