ReadConsoleInput函数从控制台输入缓冲区读取数据,并将其从缓冲区中删除。
BOOL ReadConsoleInput(
HANDLE 【hConsoleInput】, | //控制台输入缓冲区的句柄 |
PINPUT_RECORD 【lpBuffer】, | //读取数据缓冲区的地址 |
DWORD 【nLength】, | //要读取的记录数 |
LPDWORD 【lpNumberOfEventsRead】 | //读取的记录数的地址 |
); |
参数
【hConsoleInput】
标识输入缓冲区。句柄必须具有GENERIC_READ权限。
【lpBuffer】
指向接收输入缓冲区数据的INPUT_RECORD缓冲区。
【nLength】
指定由【lpBuffer】参数指向的缓冲区的输入记录中的大小。
【lpNumberOfEventsRead】
指向接收读取的输入记录数的32位变量。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
如果【nLength】参数中请求的记录数超过缓冲区中可用的记录数,则读取可用数。直到读取至少一个输入记录为止,该函数才会返回。
一个进程可以在等待功能之一中指定控制台输入缓冲区句柄,以确定何时有未读的控制台输入。当输入缓冲区不为空时,会发出控制台输入缓冲区句柄的状态。
要确定控制台输入缓冲区中未读输入记录的数量,请使用GetNumberOfConsoleInputEvents功能。要从控制台输入缓冲区读取输入记录,而不影响未读记录的数量,请使用PeekConsoleInput功能。要放弃控制台输入缓冲区中的所有未读记录,请使用FlushConsoleInputBuffer功能。
Windows NT:此函数使用控制台当前代码页中的Unicode字符或8位字符。控制台的代码页最初默认为系统的OEM代码页。要更改控制台的代码页,请使用SetConsoleCP或SetConsoleOutputCP功能,或使用CHCPsk或mode con cp select=命令。
也可以看看
FlushConsoleInputBuffer, GetNumberOfConsoleInputEvents, INPUT_RECORD, PeekConsoleInput, ReadConsole, ReadFile, SetConsoleCP, SetConsoleOutputCP, WriteConsoleInput