簡體   English   中英

使用WINAPI ReadConsole

[英]Using 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 (0x06)時被標記。 我已經驗證了hConsole_c是有效的句柄。 有人對我做錯了什么有見識嗎? 我正在使用Visual C ++ 2008 Express Edition。 謝謝。

對我來說很好。 我使它因ERROR_INVALID_HANDLE而失敗的唯一方法是將其傳遞給STD_OUTPUT_HANDLE而不是STD_INPUT_HANDLE。 您確定hConsole_c是輸入句柄嗎?

如果您只是想在控制台應用程序的末尾等待按鍵,為什么不嘗試使用System("Pause");

您等待按鍵的方法非常復雜。 使用單個C函數調用,有兩種方法可以執行此操作:

  • getch(); (或ISO C ++一致名稱_getch ),它與平台無關;
  • system("pause"); ,這是Windows特有的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM