Einzelnen Beitrag anzeigen

yvesdaeschle

Registriert seit: 22. Nov 2004
Ort: Efringen
26 Beiträge
 
Delphi 6 Personal
 
#2

Re: Rechte Maustaste unc CTRL Systemweit abfangen

  Alt 6. Jan 2005, 14:46
Hallo,

also das mit den Hooks hab ich doch halbwegs verstanden. Und ich denke auf dem Weg bin ich jetzt schon mal richitg.

Ich habe jetzt versucht, als erstes Mal den Mausdruck zu empfangen. Dazu folgender Code:

Ist in der Hook Dll abgelegt:
Delphi-Quellcode:
function MouseHookProc(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(HookHandle, 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
//Hier kann jetzt alles bearbeitet werden
//Here one can work with the parameters
        PostMessage(WindowHandle, WM_MOUSEHOOKMSG, wParam, lParam);
      end;
  end;
end;
In meinem Programm starte ich jetzt den Hook. Und fange die Mausereignisse so ab:
Delphi-Quellcode:
procedure TForm1.DllMessage(var Msg: TMessage);
begin
// if (Msg.wParam <> WM_LBUTTONDOWN) or (Msg.wParam <> WM_LBUTTONUP) then exit;
  if Msg.wParam = WM_LBUTTONDOWN then
    Label1.Caption := ('Down')
  else if Msg.wParam = WM_LBUTTONUP then
    Label1.Caption := ('Up');
end;
Leider bekomme ich nur die Mausereignisse in meinem eigenen Programm und nicht Systemweit, ich hab doch eine DLL erstellt, ich habe das Gefühl das reicht nicht um es Systemweit zu machen!?

Yves
  Mit Zitat antworten Zitat