ReadConsoleInputEx 函数

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

注意 此函数没有关联的导入库。 此函数可用作 Kernel32.dll 中名为 ReadConsoleInputExAReadConsoleInputExW 的资源。 必须使用 LoadLibraryGetProcAddress 函数动态链接到 Kernel32.dll。

语法

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

参数

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

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

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

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

wFlags [in]

一组标志(通过 OR 连在一起),用于指定控制台的读取行为。

含义
CONSOLE_READ_NOREMOVE 0x0001 将事件保留在输入缓冲区中(如 PeekConsoleInput 中所示)
CONSOLE_READ_NOWAIT 0x0002 立即返回,即使输入缓冲区中没有事件。

返回值

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

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

注解

此函数是可配置版本的 ReadConsoleInput。 有关其他操作详细信息,请参阅 ReadConsoleInput 的注解

调用带有 CONSOLE_READ_NOMOVE | CONSOLE_READ_NOWAIT 标记的 ReadConsoleInputEx 相当于调用 PeekConsoleInput

Windows 控制台标头中不存在此函数。 要从 C 或 C++ 应用程序获取对它的访问权限,请包括以下声明并动态链接 kernel32.dll,如上面所述。

#ifndef CONSOLE_READ_NOREMOVE
#define CONSOLE_READ_NOREMOVE   0x0001
#endif

#ifndef CONSOLE_READ_NOWAIT
#define CONSOLE_READ_NOWAIT     0x0002
#endif

BOOL
WINAPI
ReadConsoleInputExA(
    _In_ HANDLE hConsoleInput,
    _Out_writes_(nLength) PINPUT_RECORD lpBuffer,
    _In_ DWORD nLength,
    _Out_ LPDWORD lpNumberOfEventsRead,
    _In_ USHORT wFlags);

BOOL
WINAPI
ReadConsoleInputExW(
    _In_ HANDLE hConsoleInput,
    _Out_writes_(nLength) PINPUT_RECORD lpBuffer,
    _In_ DWORD nLength,
    _Out_ LPDWORD lpNumberOfEventsRead,
    _In_ USHORT wFlags);

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
头文件 无,请参阅注解
无,请参阅注解
DLL Kernel32.dll
Unicode 和 ANSI 名称 ReadConsoleInputExW (Unicode) 和 ReadConsoleInputExA (ANSI)

另请参阅

控制台函数

FlushConsoleInputBuffer

GetNumberOfConsoleInputEvents

INPUT_RECORD

低级控制台输入函数

ReadConsoleInput

PeekConsoleInput

ReadConsole

ReadFile

SetConsoleCP

SetConsoleOutputCP

WriteConsoleInput