GetConsoleMode功能报告控制台输入缓冲区的当前输入模式或控制台屏幕缓冲区的当前输出模式。
BOOL GetConsoleMode(
HANDLE 【hConsoleHandle】, | //控制台输入或屏幕缓冲区的句柄 |
LPDWORD 【//当前模式标志】 | //当前模式标志 |
); |
参数
【hConsoleHandle】
标识控制台输入缓冲区或屏幕缓冲区。句柄必须具有GENERIC_READ权限。
【//当前模式标志】
指向一个32位变量,指示指定缓冲区的当前模式。
如果【hConsoleHandle】参数是输入句柄,则该模式可以是以下值的组合。创建控制台时,除了ENABLE_WINDOW_INPUT之外的所有输入模式都默认启用。
值 | 含义 |
ENABLE_LINE_INPUT | 只有读取回车字符时,ReadFile或ReadConsole函数才会返回。如果禁用此模式,则当一个或多个字符可用时,该函数将返回。 |
ENABLE_ECHO_INPUT | 由ReadFile或ReadConsole功能读取的字符在读取时将写入活动屏幕缓冲区。只有启用ENABLE_LINE_INPUT模式时,才能使用此模式。 |
ENABLE_PROCESSED_INPUT | CTRL + C由系统处理,不会放在输入缓冲区中。如果输入缓冲区正在被ReadFile或ReadConsole读取,则其他控制键由系统处理,不会在ReadFile或ReadConsole缓冲区中返回。如果还启用了ENABLE_LINE_INPUT模式,系统将处理退格,回车和换行符。 |
ENABLE_WINDOW_INPUT | 更改控制台屏幕缓冲区大小的用户交互在控制台的输入缓冲区中报告。关于这些事件的信息可以通过使用ReadConsoleInput函数的应用程序从输入缓冲区读取,但不能由使用ReadFile或ReadConsole的程序读取。 |
ENABLE_MOUSE_INPUT | 如果鼠标指针位于控制台窗口的边框内,并且窗口具有键盘焦点,则鼠标移动和按钮按下的鼠标事件将放置在输入缓冲区中。这些事件将被ReadFile或ReadConsole丢弃,即使启用此模式。 |
如果【hConsoleHandle】参数是屏幕缓冲区句柄,则该模式可以是以下值的组合。创建屏幕缓冲区时,默认情况下都会启用两种输出模式。
值 | 含义 |
ENABLE_PROCESSED_OUTPUT | 由WriteFile或WriteConsole函数编写的字符或由ReadFile或ReadConsole函数回显的字符将针对ASCII控制序列进行解析,并执行正确的操作。处理退格键,制表符,铃,回车符和换行符。 |
ENABLE_WRAP_AT_EOL_OUTPUT | 当使用WriteFile或WriteConsole或回显ReadFile或ReadConsole进行写入时,当光标到达当前行的末尾时,光标移动到下一行的开头。这会导致当光标超出窗口最后一行时,控制台窗口中显示的行会自动向上滚动。当光标超出屏幕缓冲区的最后一行时,它也会使屏幕缓冲区的内容向上滚动(丢弃屏幕缓冲区的顶行)。如果禁用此模式,则该行中的最后一个字符将覆盖任何后续字符。 |
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
控制台由输入缓冲区和一个或多个屏幕缓冲区组成。控制台缓冲区的模式确定控制台在输入或输出(I / O)操作期间的行为。一组标志常量与输入句柄一起使用,另一组与屏幕缓冲(输出)句柄一起使用。设置一个屏幕缓冲区的输出模式不影响其他屏幕缓冲区的输出模式。
ENABLE_LINE_INPUT和ENABLE_ECHO_INPUT模式仅影响使用ReadFile或ReadConsole从控制台输入缓冲区读取的进程。类似地,ENABLE_PROCESSED_INPUT模式主要影响ReadFile和ReadConsole用户,除了它还确定是否在输入缓冲区中报告CTRL + C输入(由ReadConsoleInput函数读取)或传递给定义的函数通过应用程序。
ENABLE_WINDOW_INPUT和ENABLE_MOUSE_INPUT模式确定涉及窗口大小调整和鼠标操作的用户交互是否在输入缓冲区中报告或丢弃。这些事件可以通过ReadConsoleInput读取,但总是被ReadFile和ReadConsole过滤。
ENABLE_PROCESSED_OUTPUT和ENABLE_WRAP_AT_EOL_OUTPUT模式仅影响使用ReadFile或ReadConsole和WriteFile或WriteConsole的进程。
要更改控制台的I / O模式,请调用SetConsoleMode功能。
也可以看看
ReadConsole, ReadConsoleInput, ReadFile, SetConsoleMode, WriteConsole, WriteFile