我正在尝试使用 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 版。谢谢。
最佳答案
对我来说效果很好。我可以让它因 ERROR_INVALID_HANDLE 失败的唯一方法是将 STD_OUTPUT_HANDLE 而不是 STD_INPUT_HANDLE 传递给它。您确定 hConsole_c 是输入句柄吗?
关于c++ - 使用 WINAPI ReadConsole,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2766603/