muss es immer eine Form sein?
Es kann jede beliebige Klasse sein. Man muss sie nur passend aufbereiten. Hier ein Basisgerüst:
Delphi-Quellcode:
type
TMessageListener = class
private
FWindowHandle: HWND;
procedure WndProc(var Msg: TMessage);
public
constructor Create;
destructor Destroy; override;
end;
constructor TMessageListener.Create;
begin
inherited;
FWindowHandle := AllocateHWnd(WndProc);
end;
destructor TMessageListener.Destroy;
begin
if FWindowHandle <> 0 then
begin
DeallocateHWnd(FWindowHandle);
FWindowHandle := 0;
end;
inherited;
end;
procedure TMessageListener.WndProc(var Msg: TMessage);
begin
Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, Msg.wParam, Msg.lParam);
end;