このコードは、入力ボタンが押された後にユーザーが入力した内容を出力します。
main()
{
HANDLE stdinInput = 0;
DWORD numEvents = 0;
DWORD numEventsRead = 0;
DWORD numReceivedRecords = 0;
DWORD fdwSaveOldMode;
DWORD fdwMode;
char dataBuffer[100];
int bufferLen = 0;
stdinInput = GetStdHandle(STD_INPUT_HANDLE);
if (stdinInput == INVALID_HANDLE_VALUE)
perror("GetStdHandle");
if (! GetConsoleMode(stdinInput, &fdwSaveOldMode) )
perror("GetConsoleMode");
fdwMode = ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT;
if (! SetConsoleMode(stdinInput, fdwMode) )
perror("SetConsoleMode");
for(; ; )
{
GetNumberOfConsoleInputEvents(stdinInput, &numEvents);
if (numEvents != 0) {
INPUT_RECORD eventBuffer;
ReadConsoleInputA(stdinInput, &eventBuffer, 1, &numEventsRead);
if (eventBuffer.EventType == KEY_EVENT) {
if(eventBuffer.Event.KeyEvent.bKeyDown)
{
if(eventBuffer.Event.KeyEvent.uChar.UnicodeChar != 0)
{
printf("%c",eventBuffer.Event.KeyEvent.uChar.UnicodeChar);
dataBuffer[bufferLen++] = eventBuffer.Event.KeyEvent.uChar.UnicodeChar;
dataBuffer[bufferLen] = '\0';
if ( dataBuffer[bufferLen] == 99 || eventBuffer.Event.KeyEvent.uChar.UnicodeChar == '\r' ) {
printf("User Wrote: %s\n",dataBuffer);
memset(dataBuffer,0,sizeof(dataBuffer));
bufferLen = 0;
}
}
}
}
}
}
}
ここで、ユーザーが上/下矢印を押したときにそれを検出し、Enter キーを押さなくても「上/下矢印が押されました」と出力するようにします。
GetKeyState() で仮想キー コードを使用することを考えましたが、完了できません。
このようなことを達成する方法についてのアイデア。
前もって感謝します。