AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tastaturpuffer leeren

Ein Thema von Cicaro · begonnen am 8. Jul 2005 · letzter Beitrag vom 22. Jul 2005
Antwort Antwort
Seite 2 von 2     12   
runger
(Gast)

n/a Beiträge
 
#11

Re: Tastaturpuffer leeren

  Alt 12. Jul 2005, 11:17
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
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#12

Re: Tastaturpuffer leeren

  Alt 12. Jul 2005, 12:16
Wie kann ich denn den Tastaturpuffer leeren ? function ClearKeyboardBuffer:Integer;

Siehe auch: http://www.swissdelphicenter.ch/de/showcode.php?id=1066
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#13

Re: Tastaturpuffer leeren

  Alt 12. Jul 2005, 13:29
Na also,

geht scheinbar doch ohne unnötige Diskussion.

Rainer
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#14

Re: Tastaturpuffer leeren

  Alt 12. Jul 2005, 13:44
@runger, aber ob das Cicaro so von Nutzen ist ist eine andere Frage.
Ich habe es noch nicht geschaft einen Tastaturpuffer zum überlaufen zu bringen ,
deshalb würde es mich Interessieren wie das bei Cicaro sein kann.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#15

Re: Tastaturpuffer leeren

  Alt 21. Jul 2005, 21:14
Zitat von turboPASCAL:
@runger, aber ob das Cicaro so von Nutzen ist ist eine andere Frage.
Ich habe es noch nicht geschaft einen Tastaturpuffer zum überlaufen zu bringen ,
deshalb würde es mich Interessieren wie das bei Cicaro sein kann.
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#16

Re: Tastaturpuffer leeren

  Alt 21. Jul 2005, 21:20
Zitat von Cicaro:
Und ? Ist er übergelaufen ?
Sowas mach ich doch nicht freiwillig
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#17

Re: Tastaturpuffer leeren

  Alt 22. Jul 2005, 10:54
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.
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#18

Re: Tastaturpuffer leeren

  Alt 22. Jul 2005, 17:00
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.
Hm, ... gestern hab' ich C: formatiert und das System noch mal raufgejagt. Aber davor funktionierte es. Wirklich!

@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 !
  Mit Zitat antworten Zitat
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#19

Re: Tastaturpuffer leeren

  Alt 22. Jul 2005, 17:10
Zitat von Cicaro:
@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.
klar verarbeitet das system die mausbewegungen direkt (sonst könne man ja z.b. über einem hängen gebliebenen fenster nicht die maus bewegen), aber das system schcickt dann gleichzeitig auch nachrichten an das fenster, dass sich z.b. die maus dadrüber bewegt oder geklickt hat. und wenn diese messages auch gelöscht werden würden könntest du z.b. OnMouseMove oder OnClick nicht mehr benutzen.

von daher rate ich dringenst davon ab, einfach ständig die message-warteschleife zu löschen.
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.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#20

Re: Tastaturpuffer leeren

  Alt 22. Jul 2005, 18:11
Delphi-Quellcode:
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;
TApplication.ProcessMessages macht auch nix anderes.

...den Rest hat BlackJack beantwortet.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz