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 WPARAM, LPARAM in einem Hook auslesen ( gelöst ) (https://www.delphipraxis.net/122034-wparam-lparam-einem-hook-auslesen-geloest.html)

Corpsman 8. Okt 2008 15:41


WPARAM, LPARAM in einem Hook auslesen ( gelöst )
 
Hossa alle, ich bins schon wieder.

Also ich habe in meinem Notebook ein Touchpad drin das sich von allein nicht deaktivieren läst und da dachte ich baue ich mir selbst so ne Fancy funktion.

Ich also Kräftig gegoogelt und jede menge Mouse Hooc Tuts gefunden.
Das Prob ist aber das die die Maus komplett lahm legen, ich will aber nur unter bestimmten Kombinationen die Maus blockieren.

Und Zwar :

Die maus soll immer beweglich sein.

Das Mausklicken soll nur dann erlaubt sein wenn in den Letzten 3 Sec. die Maus bewegt wurde, bzw geklickt wurde.

D.h. wenn ich also 3 secs die maus nicht bewege wird der 1. Mausklick danach abgefangen und schalten die Maus wieder frei, erfolgt ein 2. Klick innerhalb von 3 secs, wird dieser ganz normal weitergegeben...

Wenn ich nach 3 secs die Maus wieder bewege dann soll der 1. Mouse ebenfalls wieder weitergegeben werden, da ja die maus benutzt wurde.

Was das ganze soll :

ein Notebook mit Touchpad erzeugt den Frust, das wenn man Tippt man mim Handballen ab und zu auf die Touchpadfläche kommt. dann wird weil das als Klick erkannt wird der Cursor da hin bewegt, wo die maus gerade steht. Was recht ergärlich ist, weil man dann an der Falschen stelle weiterschreibt ...


Den Kompletten Hook habe ich schon, das ist ja auch kein Problem

Delphi-Quellcode:

Function MouseHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
Begin
  result := 1; // CallNextHookEx(Mouse_HookHandle, nCode, wParam, lParam);

  // Was das hier macht weis ich allerdings nicht, wird aber bestimmt wichtig sein ;)
  If nCode >= 0 Then Begin
    mhs := Pointer(lParam);
    PostMessage(AppWnd, WM_SENDPACK, 0, 0);
  End;
End;
Wenn ich das Result := -1 wieder zu dem CallNextHook mache, dann funzt die maus wieder, klar.

Die Frage ist nun wie bekomme ich aus den wparam und Lparam dingern raus das ich gerade geklickt habe, bzw das die maus sich bewegt hat ?

Wenn ich diese Informationen habe ist der Rest ja ein kinderspiel ..

Könnt ihr mir also sagen wie ich MouseMove und SS_left aus wparam und lparam rauskriege ?

Corpsman 8. Okt 2008 16:10

Re: WPARAM, LPARAM in einem Hook auslesen
 
Noch mehr Rumsuchen brachte mich zu

Delphi-Quellcode:
Function MouseHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
Var
  mhs: PMSLLHookStruct;
  b: Boolean;
  a: Cardinal;
Begin
  If wParam = WM_LBUTTONDOWN Then Begin
    a := gettickcount;
    If (a - LastAction) > Delaytime Then Begin
      // Diesen einen Click fangen wir ab
    End
    Else Begin
      result := CallNextHookEx(Mouse_HookHandle, nCode, wParam, lParam);
    End;
  End
  Else
    result := CallNextHookEx(Mouse_HookHandle, nCode, wParam, lParam);
  LastAction := gettickcount;

  If nCode >= 0 Then Begin
    mhs := Pointer(lParam);
    PostMessage(AppWnd, WM_SENDPACK, 0, 0);
  End;
End;
und das scheint zu funktionieren ;).


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