控制台的Ctrl-S不工作.它似乎在等待输入

本文关键字:在等待 输入 工作 Ctrl-S 控制台 | 更新日期: 2023-09-27 18:11:29

我试图使一个控制台应用程序在 c# 。当使用Console.ReadKey并键入Ctrl + S时,应用程序似乎在"等待"另一个按键,因为下一个键I类型也被吃掉了。

我怎样才能防止这种情况的发生?

控制台的Ctrl-S不工作.它似乎在等待输入

经过一番挖掘,我能弄清楚如何做到这一点的唯一方法是调用一些本地方法来禁用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);