Tastatureingaben abfangen
-
hi,
ich wollte mal wissen ob es da irgend eine möglichkeit gibt die tastatur eingaben abzufangen, nach dem prinzip: wenn a gedrückt, mach das ... (nicht konsole).
danke schonmal,
mfg Mindphreaker
-
Tastatur abfragen: GetKeyState/GetAsyncKeyState/WM_KEYDOWN
Tastatur abfangen: Hook setzen. Siehe Faq.
-
Natürlich gibt es da eine Möglichkeit. Du kannst z.B. entweder WM_KEYDOWN / WM_KEYUP in deiner WndProc abfangen, oder du kannst auch GetKeyboardState bzw. GetAsyncKeyState verwenden

-
ich bin mir da nicht ganz sicher, aber könnte ich es auch so lösen?
key=getch();
mfg Mindphreaker
-
Ich denke nicht

-
hast recht,
das würde ja nur mit ner konsole funktionieren.
ich hab mich jetzt für die GetKeyState() funktion entschieden.
und hab jetzt noch 2 kleine syntaxspezifische fragen dazu.
1.) Was gibt die funktion genau zurück?
2.) Muss ich als Parameter den asci code des gedrückten zeichens übergeben?mfg Mindphreaker
-
vielleicht sollt ich noch ein bisschen code zeigen wie ichs probiert hab.
leider passt da eben was mit der abfrage ned ganz.#include"StdAfx.h" #include<windows.h> #include<iostream.h> int main(int argc, char* argv[]) { int exit=0; while(exit==0) { if(GetKeyState(97) == 1) // hier geht er nie rein { cout << "Sie haben 'a' gedrückt." << endl; exit=1; } } return 0; }
-
arrgh das ist ja voll die WinAPI anwendung

-
hä? ..
also, eigentlich hatte ich mir ja eine antwort auf meine frage erhofft ...
ich will ja nicht drängen oder so, hab ja zeit, aber gleich so nieder machen,
wobei ich jetzt deine unmut auch nicht ganz versteh, naja.
mfg Mindphreaker
-
probier mal das:
#include <windows.h> #include <stdio.h> int main() { while (1) { int s; for (s=0; s<256; s++) if ((GetAsyncKeyState(s) & 0x8001) == 0x8001) putchar(s); Sleep (10); } }
-
super!
funktioniert einwandfrei, vielen dank!
mfg Mindphreaker
-
Mindphreaker schrieb:
Blackhawk schrieb:
arrgh das ist ja voll die WinAPI anwendung

hä? ..
Zu Beginn hast du geschrieben:
Mindphreaker schrieb:
(nicht konsole)
Das was du da jetzt hast ist aber wohl schon eine Konsolen-Anwendung, oder nicht

-
Es gibt unter den neueren Windows-Versionen (EDIT: ab Windows 95, NT 4.0) keinen Unterschied mehr zwischen Konsole- und Fensteranwendung.
Die Programme unterscheiden sich nur noch darin, wie sie aufgerufen werden (Konsole startet i.d.R. ein Programm synchron, Windows Shell asynchron).
Deshalb kann man ruhigen Gewissens alle WinAPI-Funktionen auch in Konsole-Anwendungen verwenden.

-
Aber afaik funktionieren nicht alle Befehl aus einer Konsolen-Anwendung ohne weiteres in einer WinAPI-Fensteranwendung

Ich habe es zwar noch nie ausprobiert, aber z.B. getch() habe ich in einer WinAPI-Fensteranwendung noch nie gessehen