Zitat von
Cicaro:
Führ' mal den Code hier aus!
Delphi-Quellcode:
repeat
Keybd_Event(48,0,0,0); // Sendet ein Zeichen ('0')
until GetAsyncKeyState(27)<0; // Esc zum Abbrush
Und ? Ist er übergelaufen ?
sorry, da passiert bei mir überhaupt nichts - nur das hauptprogramm bleibt stehen - und das ist ja auch klar weil er in der schleife feststeckt. wenn man da ein Application.Processmessages reinmacht passiert dann wirklich gar nichts, man kann ganz normal weiter machen... so what...
des weiteren kann ich nur zustimmen dass die lösung mit erst tastaturpuffer durch selbst gesendete messages volllaufen lassen und dann wieder leeren ja wohl nicht das wahre sein kann. im allgemeinem musste ich mich noch nie um meinen "tastaturpuffer" kümmern (ausser mit dem guten alten DOS).
es soll hier auch noch gesagt sein dass es eigentlich einen puren tastaturpuffer gar nicht gibt. immer wenn eine taste gedrückt wird wird eine message an das aktive fenster gesendet, und die wird, wenn noch andere messages anstehen, einfach hinter den anderen messages eingereiht, also z.b. auch hinter messages für mausbewegungen etc. und dass sich so ein "Messagestau" bildet kann eigentlich nur passieren wenn du in einer schleife die ganze zeit rackerst und die messages nicht zwischendurch mit Application.Processmessages abarbeiten lässt. und das sollte man tunlichst vermeiden, da das dann aussieht, als würde die anwendung hängen beleiben, da du z.b. auch nciht mehr das fenster resizen kannst.
auch ja und ich denke mal das der code zum tastaturpuffer leeren die gesamte messagequeue löscht, d.h. auch alle messages bezüglich mausbewegungen etc., und ich weiss ja nicht ob es das ist was du möchtest.
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.