c++ - 使用 WINAPI ReadConsole

标签 c++ winapi console-application keyboard-input

我正在尝试使用 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/

相关文章:

c++ - solvePnpRansac GPU断言失败

c++ - std::thread with pthread_setschedparam with c++ 11

c++ - 为结构变量创建 vector<type> 类型的对象

windows - 可以在 Win32 中创建私有(private)注册表吗?

c# - 为什么重新启动进程时不再收到 OutputDataReceived 事件?

c++ - QListView & QStandardItemModel 在编辑行之前检查文本

c++ - 使用 SetupAPI 获取有关设备的信息

python - 如何在python中查找/导入win32security?

linux - 我可以从 linux 控制台强制刷新 firefox 页面吗

基于控制台时间的引擎