C++ Tastaturpuffer auslesen

JetStre4m

Lieutenant
Registriert
Nov. 2007
Beiträge
578
Hallo zusammen, ich habe eine recht einfache(hoffentlich^^) Frage:
Ist es möglich möglichst mit Standardbibliotheken den Tastaturpuffer auszulesen?
ich hab mir folgendes zusammengefriemelt:
Code:
#include <iostream>hile
#include <conio.h>

using namespace std;

int main()
{
    char bstabe;
    while(!kbhit())
    {
    }
    int var=getchar();
    cout<<var;

}

Das funktioniert auch wunderbar, allerdings nur wenn das Programm im Fokus ist. Es soll aber auch funktionieren wenn es im Hintergund ist. Außerdem wartet die Funktion getchar() immer darauf dass die return taste gedrückt wird. Ich möchte aber dass, wenn ich einen Buchstaben eingebe, das programm diesen sofort einliest und "weiterverarbeitet". Also z.B. wenn ich im aktuellen Programm "a" drücke muss ich erst enter drücken bevor der ASCII Code Ausgegeben wird, anstatt dass sofort, ohne RETURN weitergearbeitet wird.
Weiß jemand zufällig wie man dass möglichst einfach bewerkstelligen könnte?
 
tXX schrieb:
Weiß jemand zufällig wie man dass möglichst einfach bewerkstelligen könnte?

Garnicht. Kannst einen eigenen Tastatur-Treiber schreiben, damit könnte es was werden. (Vorsicht, Ironie)
 
Na Und? angenommen ich würde mir einen logger bauen wollen gehört da noch wesentlich mehr dazu als nur den Tastaturpuffer auszulesen und wenn ich das einfach nur zur übung machen will is das sogar ziemlich nützlich denke ich mal... sagt ja keiner dass ich damit irgendwem schaden würde
btw wird das auch kein logger aber das glaubt hier wahrscheinlich eh keiner...
@CYPOG: Danke für deine Antwort, das funktioniert schonmal, hat jemand noch wie man erreichen könnte dass das programm auch korrekt arbeitet wenn es nicht den fokus hat?
 
Zuletzt bearbeitet:
Mit der WinAPI würde es evt. durch GetAsyncKeyState funktionieren.
Das würde ich definitiv mal probieren.
Allerdings funktioniert dies nicht, wenn das Programm, welches im Moment im Fokus steht, die Direct API für das auslesen der Tasten verwendet.

(Sollte nur für Spiele relevant sein).
im MSDN dazu eine gute Dokumentation. ;)
 
@oldsqldma: Also mein Zeitansager benutzt GetAsyncKeyState und es funktioniert einwandfrei in UTIII und L4D, in TF2 meines Wissens auch. Also ich weiß ja nicht was da alles verwendet wird, aber ich wollte hier nur mal Rückmeldung diesbezüglich geben. Probleme gibt es nur, wenn Tasten gesendet werden müssen. Da funktioniert das bei keinem der oben genannten Spiele, getestet mit TF2, da geht es nur im Chat und evtl. im Hauptmenü, das weiß ich jetzt nicht mehr so genau.
 
Beim lesen kann es Probleme geben, aber sagen wir, es ist unwahrscheinlich.
@Woey, wieso soll er das Window Hooken, wenn er auch er GetAsyncKeyState lesen kann? ;)
 
Also das mit GetAsyncKeyState hört sich schonmal gut an, soweit ich das verstanden habe muss ich dabei aber für jede taste einzeln abfragen ob sie gedrückt wurde, oder?
 
ok, super, ich denke damit krieg ich das schon hin:)
Vielen dank an alle...
 
Zurück
Oben