我正在尝试使用WINAPI ReadConsole()等待Win32控制台应用程序末尾的任何按键。

CONSOLE_READCONSOLE_CONTROL tControl;
char pStr[65536];
DWORD dwBufLen = 1;
DWORD dwCtl;

tControl_c.nLength = sizeof( CONSOLE_READCONSOLE_CONTROL );
tControl_c.nInitialChars = 0;
tControl_c.dwControlKeyState = 0;
tControl_c.dwCtrlWakeupMask = NULL;

pBuf[0] = 0x00;

do
{
   ReadConsole( hConsole_c, pStr, (*pBufLen) * sizeof(TCHAR), pBufLen, &tControl );
}
while ( pStr[0] == 0x00 );

代码执行时不会引发异常。但是,当ReadConsole()函数执行时,错误代码ERROR_INVALID_HANDLE(0x06)被标记。我已经验证hConsole_c是有效的句柄。有人对我做错事情有任何见解吗?我正在使用Visual C++ 2008 Express Edition。谢谢。

最佳答案

对我来说很好。我使它因ERROR_INVALID_HANDLE而失败的唯一方法是将其传递给STD_OUTPUT_HANDLE而不是STD_INPUT_HANDLE。您确定hConsole_c是输入句柄吗?

10-05 21:47