从控制台输入缓冲区读取数据,并将其从缓冲区删除,行为可配置。
注意:此函数没有关联的导入库。 此函数可用作 Kernel32.dll 中名为 ReadConsoleInputExA 和 ReadConsoleInputExW 的资源。 必须使用 LoadLibrary 和 GetProcAddress 函数动态链接到 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_NOREMOVE0x0001 |
将事件保留在输入缓冲区中(如 PeekConsoleInput 中所示) |
CONSOLE_READ_NOWAIT0x0002 |
立即返回,即使输入缓冲区中没有事件。 |
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
此函数是可配置版本的 ReadConsoleInput。 有关其他操作详细信息,请参阅 ReadConsoleInput 的注解。
调用带有 CONSOLE_READ_NOREMOVE | 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) and ReadConsoleInputExA (ANSI) |