Tasten simulieren
-
Irgendwie funktioniert das bei mir nicht, oder hab ich was vergessen:
int main(int argc, char *argv[]) { char abfrage; cout<<" j drücken"; abfrage=getch(); keybd_event(0x6A, 0, 0, 0); keybd_event(0x6A, 0, KEYEVENTF_KEYUP, 0); if(abfrage=='j') { cout<<"\nSie haben j gedrückt"; } system("PAUSE"); return 0; }
Wollts nurmal testen, normalerweise müsste er doch automatisch in den if Zweig springen? tut er aber nicht
-
Wieso machst du nicht ne while schleife mit kbhit()...
... int frames = 0; while(kbhit()) { frames++; if(frames > 300) break; } ...
So ungefähr, natürlich musst du die Frames anpassen...
-
T0mmy, das Problem ist, dass er aus dem getch() erst wieder rauskommt, wenn eine Taste gerückt wurde, und wenn eine gedrückt wurde dann erst schickt er dein j an die Konsole. Da ist aber in abfrage noch der vorherige Wert. Das geht eben so nicht.
Du musst eine Funktion finden die rausfindet ob eine Taste gedrückt worden ist, wenn dies nach 10 Sekunden nicht eingetroffen ist, kannst du ein Input-Event senden, zB 'j' und danach erst mit getch() die jeweilige Taste bzw. eben dein gesendetes Event auslesen.
Da du aber an dein eigenes Programm sendest kannst du dir das Auslösen eines Input-Events in den meisten Fällen getrost sparen und nach 10 Sekunden sofort weitermachen als wäre ein 'j' gedrückt.
Hoffe das kam jetzt klar rüber :).
MfG SideWinder
-
SideWinder schrieb:
Nur bedingt in diesem Fall AJ, natürlich gehts, aber in dieser Zeit musst du kbhit() andauernd abfragen, gibt ne nette Systemauslastung :).
MfG SideWinder
Dafür gabs doch eine API-Funktion, oder?
*nachdenk*
-
Ich will aber nicht x ms warten bis die Eingabe wieder da ist - ja man merkt es kaum :p
MfG SideWinder
-
Du kannst dich auch nicht entscheiden. Entweder willst du eine geringe Systemauslastung oder eine millisekundenschnelle Eingabemöglichkeit *tztztz*
:p
-
Deswegen hat die Tastatur absofort das Recht das OS zu unterbrechen ;).
MfG SideWinder
-
Und ich dachte du magst keine Interrupts
-
Doch, bloß kenne ich mich nicht so gut mit ihnen aus ;).
MfG SideWinder
-
Na dann mach dich mal ran, damit du das OS unterbrechen kannst mit einer Tastatureingabe