Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Messages vom Keyboard nicht verarbeiten

  Alt 19. Aug 2005, 16:27
Zitat von Robert:
Der Ansatz ist falsch.
Lagere das Senden in einen Thread aus und die Oberflaeche friert nicht ein.
Ich denke angestrengt darüber nach, aber eigener Thread hilft mir wohl auch nicht weiter.

Die Anwendung arbeitet mit ActionLists; ich könnte also die Action vorher disablen.
Allerdings arbeiten die Benutzer wie am Fliessband.
Solange der Dialog mit der ser. Schnittstelle läuft, würden der Shortcut F6 der mit der Action verbunden ist,
zu nichts führen.
Dann müsste er nochmals F6 drücken...
Irgendwie muss ich Keyboard Messages solange verzögern, bis mein lang dauernder Vorgang abgeschlossen ist.

Von meiner Anwendung heraus rufe ich ein VB-Script auf; dieses VB-Script startet nun den
lang dauernder Vorgang (Automatisierungschnittstelle).
Das macht die Sache noch komplizierter.

Im Moment sieht meine Warteschleife so aus:
Delphi-Quellcode:
  ...
  ClearKeyBoardBuffer; // KEY-Messages einfach schlucken
  Application.ProccessMessage;
Irgenwie müsste global für die Anwendung alle Keyboard-Events abfangen und in einer eigenen Queue zwischenspeichern.

[Edit]
Inzwischen habe ich eine eigene Message Queue gebaut.
Damit werden Key-Messages zwischengespeichert:
Delphi-Quellcode:
// Test Procedure
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
   for i := 0 to 100 do
   begin
      // alle Messages ausser KEY-Messages verarbeiten
      ProccessMessagesNoKey;
      Sleep(100);
   end;
   // jetzt alle Key-Messages aus der Vergangenheit abspielen
   PlaybackMessageQueue;
end;
[/Edit]
Angehängte Dateien
Dateityp: pas umessagequeue_861.pas (1,6 KB, 9x aufgerufen)
Andreas
  Mit Zitat antworten Zitat