使用WINAPI ReadConsole

我试图用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 (0×06)被判。 我已经验证hConsole_c是一个有效的句柄。 没有人有任何见解,以我在做什么错? 我使用Visual C ++ 2008 Express版本。 谢谢。

--------------解决方案-------------

对我来说工作正常。 我能得到它的失败,ERROR_INVALID_HANDLE的唯一办法就是通过它STD_OUTPUT_HANDLE而不是STD_INPUT_HANDLE的。 你肯定是hConsole_c输入处理?

如果你只是想在你的控制台应用程序的结束,等待按键你为什么不尝试System("Pause");

你等待一个按键方法非常过于复杂。 使用简单的C函数调用,有一对夫妇的方式,你可以这样做:

  • getch(); (或ISO C ++一致性名, _getch ),这是平台无关的;
  • system("pause"); ,它是Windows特异性。
分类:C# 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.868 (s). 10 q(s)