首页 > 解决方案 > 控制台:中止读取或读取

问题描述

控制台Read命令无法识别VK_ESCAPE。使用时ReadConsoleInput,不区分大小写。Read/是否有足够的东西Readln报告中止?

标签: delphiconsole-application

解决方案


  • 上的文档Read()告诉您它是针对字符的,而不是一般的键。它也不会帮助您识别PgUpPrint。这也是它与 如此相似的原因Readln(),不出所料,它也适用于文本,而不是按下单独的键。
  • 默认情况下,控制台进程不知道“中止”是什么意思。常识(甚至未绑定到Windows)是Ctrl+C和/或Ctrl+Break终止进程
  • aReadConsoleInput()也不是它的KEY_EVENT 记录不区分大小写:你再次得到键,而不是字符。这意味着您必须检查是否.dwControlKeyStateSHIFT_PRESSEDCAPSLOCK_ON设置将所有键转换为适当的字符(即只有Shift+S使其成为大写 S)。

何时解释键以及何时将输入视为文本/字符由您决定。是的:Esc在使用时识别Readln()永远不会起作用-您必须重新发明自己的Readln(),即处理所有输入,包括您最喜欢的键,例如Esc. 这也将帮助您发现哪些键(您键入)导致哪些 VK 常量。


推荐阅读