ReadConsole

【勇芳软件工作室】汉化HomePreviousNext

ReadConsole功能从控制台输入缓冲区读取字符输入,并将其从缓冲区中删除。

BOOL ReadConsole(

HANDLE 【hConsoleInput】,//控制台输入缓冲区的句柄
LPVOID 【lpBuffer】,//缓冲区地址接收数据
DWORD 【nNumberOfCharsToRead】,//要读取的字符数
LPDWORD 【lpNumberOfCharsRead】,//读取的字符数的地址
LPVOID 【lpReserved】//保留
); 

参数

【hConsoleInput】

标识控制台输入缓冲区。句柄必须具有GENERIC_READ权限。

【lpBuffer】

指向缓冲区,接收从控制台输入缓冲区读取的数据。

【nNumberOfCharsToRead】

指定要读取的字符数。因为该函数可以读取2字节Unicode或1字节ANSI字符,所以【lpBuffer】参数指向的缓冲区的大小应至少为【nNumberOfCharsToRead】 * sizeof(TCHAR)。

【lpNumberOfCharsRead】

指向接收实际读取的字符数的32位变量。

【lpReserved】

Reserved; must be NULL.

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

ReadConsole从控制台的输入缓冲区读取键盘输入。它的行为类似于ReadFile函数,除了它可以使用Unicode(宽字符)或ANSI模式读取。要使应用程序能够维护与两种模式兼容的一组源,请使用ReadConsole而不是ReadFile.虽然ReadConsole只能与控制台输入缓冲区句柄一起使用,但可以与其他句柄(如文件或管道)一起使用ReadFile.如果与被重定向为控制台句柄以外的标准句柄一起使用,ReadConsole将失败。

影响ReadFile行为的所有输入模式对ReadConsole具有相同的效果。要检索并设置控制台输入缓冲区的输入模式,请使用GetConsoleModeSetConsoleMode功能。

如果输入缓冲区包含除键盘事件之外的输入事件(如鼠标事件或窗口调整大小事件),则它们将被丢弃。这些事件只能通过使用ReadConsoleInput函数来读取。

Windows NT:此函数使用控制台当前代码页中的Unicode字符或8位字符。控制台的代码页最初默认为系统的OEM代码页。要更改控制台的代码页,请使用SetConsoleCPSetConsoleOutputCP功能,或使用CHCPskmode con cp select=命令。

也可以看看

GetConsoleMode, ReadConsoleInput, ReadFile, SetConsoleCP, SetConsoleMode, SetConsoleOutputCP, WriteConsole