partitionist
Erfahrenes Mitglied
Hallo, ich möchte ein Programm erstellen welche auf bestimmte Tastatur Knöpfe reagiert (TAB-Taste), wenn diese Taste nicht gedrückt wird dann soll normale Eingabe erfolgen, nur wie macht man das mit der ReadConsole() Funktion
Code:
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
VOID ErrorExit(LPSTR);
VOID KeyEventProc(KEY_EVENT_RECORD);
int main(VOID)
{
cout << "Eingabe:>";
HANDLE hStdin;
DWORD cNumRead, fdwMode, fdwSaveOldMode, i;
INPUT_RECORD irInBuf[128];
int counter=0;
// Get the standard input handle.
hStdin = GetStdHandle(STD_INPUT_HANDLE);
if (hStdin == INVALID_HANDLE_VALUE)
ErrorExit(TEXT("GetStdHandle"));
// Save the current input mode, to be restored on exit.
if (! GetConsoleMode(hStdin, &fdwSaveOldMode) )
ErrorExit(TEXT("GetConsoleMode"));
// Enable the window and mouse input events.
fdwMode = ENABLE_WINDOW_INPUT;
if (! SetConsoleMode(hStdin, fdwMode) )
ErrorExit(TEXT("SetConsoleMode"));
// Loop to read and handle the input events.
while (counter++ <= 100)
{
// Wait for the events.
if (! ReadConsoleInput(
hStdin, // input buffer handle
irInBuf, // buffer to read into
128, // size of read buffer
&cNumRead) ) // number of records read
ErrorExit(TEXT("ReadConsoleInput"));
// Dispatch the events to the appropriate handler.
for (i = 0; i < cNumRead; i++)
{
switch(irInBuf.EventType)
{
case KEY_EVENT: // keyboard input
KeyEventProc(irInBuf[i].Event.KeyEvent);
break;
}
}
}
return 0;
}
VOID ErrorExit (LPSTR lpszMessage)
{
fprintf(stderr, "%s\n", lpszMessage);
ExitProcess(0);
}
VOID KeyEventProc(KEY_EVENT_RECORD ker)
{
//Wartet auf TAB Taste
if(ker.wVirtualKeyCode == VK_TAB)
{
if(ker.bKeyDown)
cout << "#TAB EVENT PRESSED#";
else
cout << "#TAB EVENT RELEASED#";
}
//Normale Eingabe
else
{
//hier kommt die normale eingabe
cout << "#Ausgabe#" << endl;
}
}