Herausfinden welche Taste gedrückt wurde
-
hi,
ich will ein Programm schreiben,
welches eine Meldung ausgibt "F1 wurde gedrückt"
Wenn F1 gedrückt wurde....
jedoch sollte es auch funktionieren wenn mein Programm z.b. minimiert ist
und ich F1 drücke wenn z.b . der internet explorer im vordergrund ist
Danke
-
hab das jetzt so gemacht:
#include <windows.h> #include <iostream> int main() { while(true) { if(GetAsyncKeyState(70)) { std::cout << "F1 Gedrueckt"; } } }jedoch tut sich nichts wenn ich F1 drücke
-
Oder einen entsprechenden Keyboard Hook verwenden (SetWindowsHookEx).
-
hmm ich glaube das getkey leichter ist
warum funktioniert das obige beispiel nicht?
-
Ich würde es schon nicht verwenden, weil es pollt, und nicht jeden Keystroke mitbekommen muss. Es belastet das System auch zu 100%
-
ok weißt du dann ein tutorial oder so zu SetWindowsHookEx.
weil ich kenn mich da nicht so aus...
-
Die F-Tasten haben eine besondere bedeutung und lassen sich deshalb ungerne auf Druckstatus abfragen. Benutz einfach andere Tasten (VK_END, etc.)...
Oder lerne das mit den hooks, obwohl Globale Hooks sehr sehr ungern gesehen werden... Warum eine .dll in JEDES LAUFENDE PROGRAMM injecten, wenn man es einfacher haben kann? Außerdem ist ein Hook viel mehr arbeit, und wenn du pech hast wird es bei ein paar benutzern deines Programms vom Antivir-Programm direkt geblockt.
-
das programm soll nur auf meinem programm laufen
und deshlab funktioniert getansykey hier
aber warum geht mein beispiel von oben nicht
-
Weil Dein Programm nicht den Fokus hat und damit keine Tastaturnachricten empfängt!
-
was für ein fokus?
-
"F1" ist 0x70 hex und nicht 70 dez.

-
dein programm ist im hintergrund und deswegen bekommt es keine messages vom betriebssystem. eine weitere, eher unschöne variante wäre, es mit RegisterHotKey() / UnregisterHotKey() zu machen. Genaueres dazu findest du in der MSDN.