は、コンソールからの入力を読み取るこのアプリケーションを書いています。
for(; ;)
{
GetNumberOfConsoleInputEvents(stdinInput, &numEvents);
if (numEvents != 0) {
INPUT_RECORD eventBuffer;
ReadConsoleInput(stdinInput, &eventBuffer, 1, &numEventsRead);
if (eventBuffer.EventType == KEY_EVENT) {
if(eventBuffer.Event.KeyEvent.bKeyDown)
{
printf("%c",eventBuffer.Event.KeyEvent.uChar.AsciiChar);
dataBuffer[bufferLen++] = eventBuffer.Event.KeyEvent.uChar.AsciiChar;
dataBuffer[bufferLen] = '\0';
if (dataBuffer[bufferLen] == 99 || eventBuffer.Event.KeyEvent.uChar.AsciiChar == '\r') {
printf("User Wrote: %s\n",dataBuffer);
memset(dataBuffer,0,sizeof(dataBuffer));
bufferLen = 0;
}
}
}
}
}
バッファにデータを置き、バッファを出力します。この問題は、Shift
またはCapsLock
を使用して大文字または! @ # $ %
文字を書き込むときに発生します。その後、何も印刷されません。
IveはVK_LSHIFT
コードで何かを試しましたが、うまくいきませんでした。
また、英語以外の言語で何かを書こうとすると、このようなものが印刷されます。▒├╞▒├╞▒├│▒├│
他の言語は認識できません。
誰かが私にこれらの問題を解決するためのヒントを教えてもらえますか?
ありがとうございます!
ありがとうございますarx。これは、 'ReadConsoleInputA'である必要のある' ReadConsoleInputW'以外では機能しました。もう一度ありがとう! –
@ F.N ReadConsoleInputWは動作しますが、Unicodeを使うためにはすべてを変更する必要があります。 'dataBuffer'を' wchar_t'に、 'printf'を' wprintf'に変更してください。 – arx