ReadConsoleInputEx 函数
从控制台输入缓冲区读取数据,并将其从缓冲区删除,行为可配置。
注意 此函数没有关联的导入库。 此函数可用作 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_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) |