【问题标题】:The meaning of ENABLE_PROCESSED_INPUT in SetConsoleMode flagsSetConsoleMode 标志中 ENABLE_PROCESSED_INPUT 的含义
【发布时间】:2012-07-09 08:14:02
【问题描述】:

在 windows API 中,有 SetConsoleMode 函数。 在模式值中,我无法理解 ENABLE_PROCESSED_INPUT 值。 MSDN 文档说

ENABLE_PROCESSED_INPUT : value (0x0001) : CTRL+C 由系统处理,不放在输入缓冲区中。如果输入缓冲区正在被ReadFileReadConsole 读取,则其他控制键由系统处理,不会在ReadFileReadConsole 缓冲区中返回。如果还启用了ENABLE_LINE_INPUT 模式,则退格、回车和换行字符由系统处理。

是不是意味着当这个标志被设置时,CTRL+C 并没有放在输入缓冲区中(因为它是由系统处理的)?还是其他情况(CTRL+C 放置在输入缓冲区中)?这个解释让我很困惑.. 谁能给我解释一下?

【问题讨论】:

  • 您的问题是什么?文字清楚地写着“CTRL+C 由系统处理,并且没有放在输入缓冲区中”。

标签: c++ winapi


【解决方案1】:

这意味着如果设置了ENABLE_PROCESSED_INPUT标志,Ctrl+C将不会被放入输入缓冲区(相反,系统会处理它并发送SIGINT 向控制台中运行的进程发出信号)。

同样的行为适用于 ENABLE_LINE_INPUT 标志:如果设置了,backspacecarriage returnline feed 等字符不会放入输入缓冲区,而是由系统处理(从自动缓冲和处理行尾)。

【讨论】:

  • 你会认为令人不安的 ENABLE_LINE_INPUT 和 ENABLE_PROCESSED_INPUT 会立即转发返回 (/r) 字符,但它只会在下一次击键后传递它。知道为什么吗?
  • Ikanab,你找到原因了吗?
【解决方案2】:

ENABLE_PROCESSED_INPUT : value (0x0001) : CTRL+C 由系统处理,不放在输入缓冲区中。

所以基本上是的,没有任何东西进入输入缓冲区,因为特殊符号由系统处理。

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多