Knall doch ein TApplicationEvents auf dein Hauptformular.
Dann kannst du die Zeit der Mausklicks auswerten:
Wenn du in deiner Applikation nach einem Mauslinks-Klick auf ein Element während einer gewissen Zeit (im Beispiel unten 500ms) einen zweiten Mauslinks-Klick auf ein
anderes Element verhindern willst, dann könntest du dies so tun:
Delphi-Quellcode:
var lmt : Cardinal;
lhwnd : HWND;
procedure TForm175.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.message = WM_LBUTTONDOWN then
begin
if Msg.hwnd <> lhwnd then
begin
if Msg.time - lmt <= 500 then handled := true;
end;
lmt := Msg.time;
lhwnd := Msg.hwnd;
end;
end;
Wenn du in deiner Applikation nur für deinen Spezialfall diese Klicks verhindern willst, dann verwende die Handles der beteiligten Elemente.
Und wenn du Mauslinks Klicks ignorieren willst, welche während der Verarbeitung von irgendwas getätigt worden sind, dann merkst du dir für dieses Intervall I die Start- und Endezeit (GetTickCount) und prüfst in ApplicationEvents1Message ob die Msg.time in I liegt.
Wenn du unter Umständen generell alle Mausevents ignorieren willst, dann prüfe ob ( Msg.message >= WM_MOUSEFIRST ) and ( Msg.message <= WM_MOUSELAST ).
Message Queues