Einzelnen Beitrag anzeigen

blackdrake

Registriert seit: 22. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#42

Re: Maus sperren während Tastatureingabe

  Alt 19. Nov 2008, 22:26
Zitat von Apollonius:
Das ist auch der Grund, warum eine MMF nötig ist: Alle Instanzen haben einen unabhängigen Satz von globalen Variablen.
Achso, das wird dann auch der Grund sein, wieso der Timer im Notepad einen Interval ("var lock_interval") von 0 statt 3000 hatte.

Also mache ich jetzt eine Planänderung:

1. Host-App startet DLL und die Hooks
2. DLL erkennt einen Tastatur-Tastendruck und sagt der Host-App "WM_ANYKEYPRESSED", die Host-App merkt sich den GetTickCount()
3. DLL erkennt einen Maus-Tastendruck und fragt Host-APP "WM_LMB_KEY_CONFIRM", was dann von der Host-App mit 10 oder 0/Irgendwas/Timeout beantwortet wird, diese Entscheidung ist abhängig vom Abstand zum zuvor gemerkten GetTickCount(), der größer oder kleinergleich 3 Sekunden ist
4a. Wird nicht 10 geantwortet, dann akzeptiert die DLL das Mausereignis
4b. Wird 10 geantwortet, dann verwirft die DLL das Mausereignis und sendet an die Host-App "WM_LMB_LOCKED"
5. Host-App reagiert auf "WM_LMB_LOCKED", in dem der Systemmauszeiger auf crNo gesetzt wird (hier mein anderes Problem)
6. In der DLL wird nun 3 Sekunden gewartet und sendet dann "WM_LMB_UNLOCKED" (da kommt wieder mein NonVCL Timer-Problem )
7. Host-App reagiert auf "WM_LMB_UNLOCKED", in dem der Systemmauszeiger wieder neutralisiert wird

Alles korrekt geplant? Ich war/bin mir unschlüssig, ob es sinnvoll ist, dass sowohl die Host-App als auch die DLL einen 3-Sekunden-Timer hat. ob der 3-Sekunden-Timer in der DLL oder in der Host-App sein sollte.

Zitat von Apollonius:
Hast du es eigentlich schon einmal mit GetAsyncKeyState versucht, um den Status der Steuerungs-Taste zu überprüfen?
Ja, hatte ich auch versucht, aber vielleicht habe ich irgendwas mit SHL o.ä. nicht beachtet. Ich habe verschiedene Sourcen gegoogelt, aber es hat keinen Erfolg erbracht (bzw. viele Beispiele gingen von einem Keycode des Ereignisses OnKeyPress aus)
Daniel Marschall
  Mit Zitat antworten Zitat