![]() |
Re: Tastaturpuffer leeren
Hallo,
warum helft ihr ihm nicht einfach? Was soll dieses rumdiskutieren? Vielleicht ist es auch für andere Anwendungen sinnvoll den Tastaturbuffer zu leeren. Rainer |
Re: Tastaturpuffer leeren
Wie kann ich denn den Tastaturpuffer leeren ?
![]() Siehe auch: ![]() |
Re: Tastaturpuffer leeren
Na also,
geht scheinbar doch ohne unnötige Diskussion. Rainer |
Re: Tastaturpuffer leeren
@runger, aber ob das Cicaro so von Nutzen ist ist eine andere Frage.
:gruebel: Ich habe es noch nicht geschaft einen Tastaturpuffer zum überlaufen zu bringen :stupid:, deshalb würde es mich Interessieren wie das bei Cicaro sein kann. |
Re: Tastaturpuffer leeren
Zitat:
Delphi-Quellcode:
Und ? Ist er übergelaufen ? :-D
repeat
Keybd_Event(48,0,0,0); // Sendet ein Zeichen ('0') until GetAsyncKeyState(27)<0; // Esc zum Abbrush |
Re: Tastaturpuffer leeren
Zitat:
|
Re: Tastaturpuffer leeren
Zitat:
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. |
Re: Tastaturpuffer leeren
Also eigentlich hab' ich ja die Lösung meines Problems schon bekommen (PeekMessage). Doch die Diskussion find' ich auch interessant. Ich werd' mir noch Application.Processmessages anschauen.
Kleine Entschuldigung für den Code: Keine Ahnung warum aber jetzt funktioníert es auch bei mir nicht. :gruebel: Hm, ... gestern hab' ich C: formatiert und das System noch mal raufgejagt. Aber davor funktionierte es. Wirklich! :gruebel: @BlackJack: meinst du wirklich, die Mausbewegungen werden als Messages in die Schlange der nicht-verarbeiteten Messages gestellt ? Meiner Meinung nach werden sie vom System über Interrupts ermittelt und verarbeitet. Das gilt auch für die Tastatur. Zusätzlich dazu (wenn es erforderlich ist, z.B.: wenn die Maus über ein Formular bewegt wird oder der Tastendruck an ein Control oder ähnliches addressiert ist) sendet das System ihre Messages an die Formulare. Und genau die gilt es zu löschen. Korrigiert mich, wenn ich mich irre ! |
Re: Tastaturpuffer leeren
Zitat:
von daher rate ich dringenst davon ab, einfach ständig die message-warteschleife zu löschen. |
Re: Tastaturpuffer leeren
Delphi-Quellcode:
TApplication.ProcessMessages macht auch nix anderes.
procedure ProcessMessages(HWND: DWORD);
var Msg: TMsg; begin While PeekMessage(Msg, HWND, 0, 0, PM_REMOVE) do // Nachrichten abfragen und Verarbeiten.. begin TranslateMessage(Msg); // umwandeln der Virtual-Key Messages zu Character Messages DispatchMessage(Msg); // Messagesr Verarbeiten end; end; ...den Rest hat BlackJack beantwortet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz