AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Maus sperren während Tastatureingabe
Thema durchsuchen
Ansicht
Themen-Optionen

Maus sperren während Tastatureingabe

Ein Thema von blackdrake · begonnen am 17. Nov 2008 · letzter Beitrag vom 8. Apr 2010
 
blackdrake

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

Re: Maus sperren während Tastatureingabe

  Alt 19. Nov 2008, 21:50
Achso, langsam blicke ich durch. Vielen Dank.

Hier der aktualisierte Plan für morgen:

1. Host-App startet DLL und die Hooks
2. DLL erkennt einen Tastatur-Tastendruck (Ausnahme Strg oder Shift) 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" und setzt den Systemmauszeiger auf crNo (hier mein anderes Problem)
6. Die Host-App setzt den 3-Sekunden-VCL-Timer zurück bzw. startet ihn neu.
7. Schlägt der VCL-Timer zu, deaktiviert er sich selbst und der Systemmauszeiger wird wieder neutralisiert. Zu diesem Zeitpunkt ist dann auch der Abstand zwischen den GetTickCount() wieder größer als 3 Sekunden und somit kann der Benutzer auch wieder klicken (VCL-Timer ist unabhängig von der Entscheidung, ob Klick erlaubt ist oder nicht und ist GUI Bestandteil)


Ereignisse, die wegfallen: WM_LMB_UNLOCKED (-> nun im Timer der Host-App) und WM_LMB_BLOCKED (Host-App reagiert auf WM_LMB_KEY_CONFIRM und führt selbst ein grafisches Ereignis aus, wenn ein Klick verboten ist), WM_LMB_LOCKED (Die Host-App erkennt den illegalen Klick und sendet die Antwort 10 für die Unterbindung, deswegen kennt sie zu diesem Zeitpunkt schon, dass jetzt eine Sperrphase eingetreten ist)

Hey, irgendwie taucht das NonVCL-Timer-Problem nicht mehr in meinem Plan auf

Weiterer Vorteil: Die DLL muss nun die Information mit den (variablen) 3 Sekunden nicht mehr kennen
Daniel Marschall
  Mit Zitat antworten Zitat
 


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 09:45 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