Einzelnen Beitrag anzeigen

Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Globaler Maushook in DLL->Callback-Funktion in Progra

  Alt 17. Sep 2008, 00:51
Oh Mann...und ich dachte immer, dass das nur beim Journalhook funktioniert, aber stehe schon wieder vor dem nächsten Problem.

Hier die Hook-Funktion aus Asserbads Tutorial (ein Hook der Typs WH_KEYBOARD_LL wurde gesetzt) :

Delphi-Quellcode:
function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
//es ist ebenfalls möglich die Bearbeitung an eine Bedingung zu knüpfen
//it's possible to call CallNextHookEx conditional only.
  Result := CallNextHookEx(0, nCode, wParam, lParam);
  case nCode < 0 of
    TRUE: exit; //wenn code kleiner 0 wird nix gemacht
                //if code smaller 0 nothing has to be done
    FALSE:
      begin
        if wparam = WM_KEYUP then beep;
      end;
  end;
end;
Wie kriege ich jetzt das 30. Bit des lparam von WM_KEYUP bzw, wie behandle ich WM_KEYUP so dass ich das kann?

Fast das selbe Problem hatte ich schonmal, jedoch habe ich damals einen Journal-Hook benutzt bei dem die Parameter teilweise nicht richtig übergeben werden.

Die Lösung sah so aus:

Delphi-Quellcode:
const
  PREV_KEY_STATE = 1 shl 30; // $40000000
begin
  // ...
  if lparam and PREV_KEY_STATE = PREV_KEY_STATE then Beep;
  // Ohne Konstante geht es auch so:
  if Odd(lparam shr 30) then Beep;
  // ..
end;
  Mit Zitat antworten Zitat