Console.ReadKey()无法捕获某些组合[shift + up]

时间:2018-06-20 01:03:14

标签: c# console

这似乎很简单,但是由于某些原因,当您使用shift修饰符时,Console.ReadKey()在控制台中无法与箭头一起使用。看起来Microsoft决定重写它来进行选择。

我想知道是否可以更改ReadKey()的默认行为?我已经阅读了文档,但是除了拦截布尔值之外,它似乎不存在。没有任何提及。

此外,我已经看过一些{32} GetKeyState这样的Win32函数,但这意味着我无法将ReadKey()与它混合使用,因为我需要进行一些轮询vs线程操作封锁。

那么,我应该只制作一个旧的Win32 Loop并手动处理所有消息吗?还是有一个更简单的解决方案?

谢谢。

1 个答案:

答案 0 :(得分:0)

搜索了多个小时后,我偶然发现了这个github项目:

https://github.com/michaelnoonan/inputsimulator

安装并开始摆弄它之后,我发现输入终于可以正常工作了[shift + left]。但是选择仍然出现。我开始在控制台中搜索禁用选择。我在API中找不到任何内容。但是我记得我的控制台窗口默认带有“ Quick Edit”标志。

因此,在查看了其他标志之后,我在“文本选择”组中发现了2个有趣的标志。通过取消选中这两个标志,可以删除窗口键替代,并且ReadKey可以正常工作。