ReadConsoleInput 函数

从控制台输入缓冲区读取数据,并将其从缓冲区删除。

语法

BOOL WINAPI ReadConsoleInput(
  _In_  HANDLE        hConsoleInput,
  _Out_ PINPUT_RECORD lpBuffer,
  _In_  DWORD         nLength,
  _Out_ LPDWORD       lpNumberOfEventsRead
);

参数

hConsoleInput [in]
控制台输入缓冲区的句柄。 该句柄必须具有 GENERIC_READ 访问权限。 有关详细信息,请参阅控制台缓冲区安全性和访问权限

lpBuffer [out]
指针 – 指向接收输入缓冲区数据的 INPUT_RECORD 结构数组。

nLength [in]
lpBuffer 参数指向的数组大小(以数组元素表示)。

lpNumberOfEventsRead [out]
指针 – 指向接收所读取输入记录数量的变量。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError

注解

如果 nLength 参数中请求的记录数超过缓冲区中可用的记录数,则读取可用的记录数。 在读取至少一条输入记录之前,该函数不会返回值。

进程可以在其中一个等待函数中指定控制台输入缓冲区句柄,以确定何时存在未读控制台输入。 当输入缓冲区不为空时,将发出控制台输入缓冲区句柄的状态信号。

要确定控制台输入缓冲区中的未读输入记录数量,请使用 GetNumberOfConsoleInputEvents 函数。 要在不影响未读记录数量的情况下从控制台输入缓冲区读取输入记录,请使用 PeekConsoleInput 函数。 要丢弃控制台输入缓冲区中的所有未读记录,请使用 FlushConsoleInputBuffer 函数。

此函数使用控制台当前代码页中的 Unicode 字符或 8 位字符。 控制台的代码页最初默认为系统的 OEM 代码页。 若要更改控制台的代码页,请使用 SetConsoleCPSetConsoleOutputCP 函数。 旧版使用者也可以使用 chcp 或 mode con cp select= 命令,但不建议将其用于新开发

示例

有关示例,请参阅读取输入缓冲区事件

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
Header ConsoleApi.h (via WinCon.h, include Windows.h)
Kernel32.lib
DLL Kernel32.dll
Unicode 和 ANSI 名称 ReadConsoleInputW (Unicode) 和 ReadConsoleInputA (ANSI)

另请参阅

控制台函数

FlushConsoleInputBuffer

GetNumberOfConsoleInputEvents

INPUT_RECORD

低级控制台输入函数

PeekConsoleInput

ReadConsole

ReadConsoleInputEx

ReadFile

SetConsoleCP

SetConsoleOutputCP

WriteConsoleInput