Thema: Delphi Probleme mit Hooks

Einzelnen Beitrag anzeigen

Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#14

Re: Probleme mit Hooks

  Alt 2. Dez 2004, 16:39
ich wollte mal fragen, wenn ich jetzt ein NICHT-Systemweiten Hook habe, brauche ich den ja nicht in eine DLL einbinden oder?

Funktioniert das, dass ich ein Hook in eine Komponente einbinde?
Ich habe es so probiert:

Delphi-Quellcode:
unit HintCheckBox;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, Messages, Windows, Graphics, ExtCtrls;

type
  THintCheckBox = class(TCheckBox)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    MouseHook : HHOOK;
    Constructor Create(AOwner:TComponent); override;
    Destructor Destroy; override;
  published
    { Published-Deklarationen }
  end;

  function MouseProc(nCode : Integer; wParam: WPARAM; lParam : LPARAM): LRESULT; stdcall;

{ ---------------------------------------------------------------------------- }
procedure Register;
{ ---------------------------------------------------------------------------- }
implementation
{ ---------------------------------------------------------------------------- }
procedure Register;
begin
  RegisterComponents('Beispiele', [THintCheckBox]);
end;
{ ---------------------------------------------------------------------------- }
{ THintCheckBox }
{ ---------------------------------------------------------------------------- }
function MouseProc(nCode : Integer; wParam: WPARAM; lParam : LPARAM): LRESULT; stdcall;
begin
  case nCode < HC_ACTION of
    True :
      Result := CallNextHookEx(MouseHook, nCode, wParam, lParam);
  else
     //.....IRGENDWAS
    Result := CallNextHookEx(MouseHook, nCode, wParam, lParam);
  end;
end;
{ ---------------------------------------------------------------------------- }
constructor THintCheckBox.Create(AOwner: TComponent);
begin
  inherited;
  MouseHook := SetWindowsHookEx(WH_MOUSE, @MouseProc, 0, GetCurrentThreadId());
end;
Nur leider kennt er die Variable MouseHook in der Funktion "MouseProc" nicht. Ist ja logisch aber wenn ich die Funktion selber mit in den PRIVATE-Teil schreibe dann meckert der Compiler bei folgender Zeile:

  MouseHook := SetWindowsHookEx(WH_MOUSE, @MouseProc, 0, GetCurrentThreadId()); Variable erwartet an der Stelle: @MouseProc


Ich hoffe ihr könnt mir helfen...
MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat