Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Wie kann ich Mausklicks auf einem fremden Fenster verhindern ?? (https://www.delphipraxis.net/186379-wie-kann-ich-mausklicks-auf-einem-fremden-fenster-verhindern.html)

kuba 29. Aug 2015 20:15

Wie kann ich Mausklicks auf einem fremden Fenster verhindern ??
 
Hallo,

ich möchte mit meiner Anwendung verhindern, dass in einem anderen Programm die Bedienung per Mauklick möglich ist.
In meiner Anwendung ist bereits eine DLL enthalten, die auch Mausklicks filtern kann, diese basiert auf einem Code von Swiss Delphi Center.

Ich hatte mir so vorgestellt, dass die Mausevents nur herausgefiltert werden, wenn die Maus über dem Fenster steht. Dazu ermittle ich die Cursorposition mit folgendem Code:

Delphi-Quellcode:
function IsMouseWithinOurRange: Boolean;
  var
    buffer: array [0..255] of Char;
    p: TPoint;
  begin
    Result := False;
    GetCursorPos(p);
    GetClassName(WindowFromPoint(p), buffer, length(buffer));
    if string(buffer)='Start' then Result:=true;
  end;
Wie kann ich das zusammen verwenden ? Ich möchte die Funktion zur Ermittlunng der Cursorposition irgendwie verwenden um die Filterung der Maustastenevents zu aktivieren bzw. zu deaktivieren. Ich rätsel schon eine ganze Weile ...

KUBA

kuba 29. Aug 2015 20:27

AW: Wie kann ich Mausklicks auf einem fremden Fenster verhindern ??
 
Hat sich schon erledigt, zu blöd aber auch. Ich hab die Funktion einfach in die DLL eingebaut und die Mausevents damit abgefangen. Cool ;-)

Delphi-Quellcode:
if IsMouseWithinOurRange then
        begin
        case TPMsg(lParam)^.message of
          WM_LBUTTONUP:
            Kill := True;
          WM_LBUTTONDOWN:
            Kill := True;
        end;
        end;
Ich hab echt schon so einige Stunden damit verbracht, aber kaum fragt man, schon kommt die passende Antwort :-D

KUBA

hathor 29. Aug 2015 20:52

AW: Wie kann ich Mausklicks auf einem fremden Fenster verhindern ??
 
//Cursor einsperren
ClipCursor(self); //Beispiel
//Cursor freigeben
ClipCursor(nil);

kuba 29. Aug 2015 21:11

AW: Wie kann ich Mausklicks auf einem fremden Fenster verhindern ??
 
Zitat:

Zitat von hathor (Beitrag 1313886)
//Cursor einsperren
ClipCursor(self); //Beispiel
//Cursor freigeben
ClipCursor(nil);

Danke für den Tip, aber ich hab es so wie oben beschrieben hinbekommen. Ich hab mich so viele Stunden damit beschäftigt und nur Müll gemacht. Nachdem ich mein Problem hier gepostet habe hat es nur 5 Minuten gedauert und es ging sofort.

Der Hook bewirkt, mit der von mir eingefügten Funktion, daß die Linke Maustaste auf dem Windows Startbutton herausgefiltert wird.

Das Problem verfolgte mich ehrlich gesagt schon seit einigen Jahren ...


KUBA :thumb:

kuba 29. Aug 2015 23:01

AW: Wie kann ich Mausklicks auf einem fremden Fenster verhindern ??
 
Zitat:

Zitat von hathor (Beitrag 1313886)
//Cursor einsperren
ClipCursor(self); //Beispiel
//Cursor freigeben
ClipCursor(nil);

Hallo,

es hat doch noch nicht ganz so funktioniert, aber dies war der entscheidene Tip, Danke !!

KUBA

kuba 30. Aug 2015 00:22

AW: Wie kann ich Mausklicks auf einem fremden Fenster verhindern ??
 
Irgend etwas stimmt noch nicht, mit 32 Bit Windows funktioniert es, aber nicht mit 64 Bit Windows.
:oops:

Luckie 30. Aug 2015 00:49

AW: Wie kann ich Mausklicks auf einem fremden Fenster verhindern ??
 
Ist die Hook DLL auch 64-Bit?

kuba 30. Aug 2015 01:17

AW: Wie kann ich Mausklicks auf einem fremden Fenster verhindern ??
 
Zitat:

Zitat von Luckie (Beitrag 1313902)
Ist die Hook DLL auch 64-Bit?

Ja sicher, ich hab mit 4 virtuellen Maschinen getestet, 2 x 32 Bit und 2 x 64 Bit. Jedesmal das gleiche Ergebnis, mit 32 Bit funktioniert es einwandfrei, mit 64 Bit funktioniert lediglich der "Beep", der mir sagt dass die Maus über dem Fenster liegt. Das ist schon sehr seltsam ...

Ich habe bisher nur mit Windows 10 getestet ....

KUBA

hoika 30. Aug 2015 05:56

AW: Wie kann ich Mausklicks auf einem fremden Fenster verhindern ??
 
Hallo,
die Frage war nicht das Betriebsssystem,
sondern ob du dein DLL als 64-Bit-DLL kompiliert hast.


Heiko

kuba 30. Aug 2015 10:49

AW: Wie kann ich Mausklicks auf einem fremden Fenster verhindern ??
 
Zitat:

Zitat von hoika (Beitrag 1313907)
Hallo,
die Frage war nicht das Betriebsssystem,
sondern ob du dein DLL als 64-Bit-DLL kompiliert hast.


Heiko

Ja, habe ich und getestet auf 4 PC's, die 32 Bit Version auf einem 32 Bit Windows und die 64 Bit Version auf einem 64 Bit Windows. Warum funktioniert es nicht mit den 64-Bit Versionen ? Verstehe ich nicht ...

KUBA


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf