Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mousedown in eigener Anwendung blocken (https://www.delphipraxis.net/98674-mousedown-eigener-anwendung-blocken.html)

bluescreen25 30. Aug 2007 18:28


Mousedown in eigener Anwendung blocken
 
Hallo, ich habe das Problem, das bei einem Touchscreen die "rechte Maustaste" über einen langen Touch simuliert wird. (Mousedown) . Diese Funktion vom Touch wird für andere Anwendungen auch gebraucht.

Desweiteren nutze ich die "konstante Berührung" des Touch um eine Lautstärke-Rampe (alle 100ms = 1%) in meinem Programm zu nutzen.

Jetzt kann man sich vorstellen, das wenn der Touch nach einer einstellbaren Zeit zwischen 1 und 3 sekunden das "rechte Mousedown" simuliert, das bei der Lautstärke-Rampe sofort unterbrochen wird.

Ich möchte für meine Anwendung den "rechten Mausclick" sowie "rechte Mausdown" blocken.

Als Ansatz habe ich
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.message = WM_RBUTTONDOWN then ....
end;
genommen, hier wird zumindest schonmal der mousedown erkannt, aber wird dieser auch zuerst dort abgefragt, oder kommt er immer durch ?

Wie kann ich dann blocken ?

Gruß, bluescreen25

bluescreen25 8. Sep 2007 13:29

Re: Mousedown in eigener Anwendung blocken
 
Kennt sich da niemand aus ?

Gruß, bluescreen25

scrat1979 8. Sep 2007 14:24

Re: Mousedown in eigener Anwendung blocken
 
Hallo!!

Kann es Dir auch nicht 100% sagen, aber da der ProzedurTitel das Wort Application beinhaltet, gehen ich davon aus, daß sich hier die Verarbeitung abspielt und auch hier blockiert werden kann.
Schau Dir mal auch in der Prozedur den Boolean-Typ Handled an. Evtl. musst Du in "if Msg.message = WM_RBUTTONDOWN ..." handled auf true setzen, damit die Verarbeitung woanders nicht mehr stattfindet.

Liebe Grüße,

SCRaT

Flips 8. Sep 2007 21:13

Re: Mousedown in eigener Anwendung blocken
 
Hi.

Also ich würde das so machen.
Linke Mausklicks kommen durch, rechte nicht.
Delphi-Quellcode:
procedure TForm3.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
if (Msg.message = WM_RBUTTONDOWN) or (msg.message = WM_RBUTTONDBLCLK) then
  msg.message := 0;
end;

procedure TForm3.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Caption := Caption+'a';
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 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