alles ansichtssache, ich finde es zB etwas aufwendig, wenn ich windows für drag&drop
bemühen soll, solange alles in einem prog bleibt...
sonst aber garnicht so schlimm, wird dir gefallen...
ist nicht von mir, habe ich auch in
DP gefunden.
im formular deklarieren:
Delphi-Quellcode:
protected (z.B.)
HookID : HHook;
IsMouseDown: boolean;
...
in FormCreate:
(Formular heißt HF)
Delphi-Quellcode:
procedure THF.FormCreate(Sender: TObject);
...
HookId:=SetWindowsHookEx(WH_MOUSE,MouseProc,0,GetCurrentThreadId());
...
dann eine funktion erstellen
Delphi-Quellcode:
// HOOK zur Feststellung von WM_LBUTTONDOWN und WM_LBUTTONUP auch
// außerhalb des Programmes (Es wird die Variable IsMouseDown gesetzt)
function MouseProc(nCode: Integer; wParam, lParam: Longint): Longint; stdcall;
begin
case nCode < 0 of
True:
Result := CallNextHookEx(HF.HookID, nCode, wParam, lParam)
else begin
case wParam of
WM_LBUTTONDOWN : HF.IsMouseDown:=TRUE;
WM_LBUTTONUP : HF.IsMouseDown:=FALSE;
end; { of case }
Result := CallNextHookEx(HF.HookID, nCode, wParam, lParam); end
end;
end;
und in FormClose wieder freigeben
Delphi-Quellcode:
procedure THF.FormClose(Sender: TObject; var Action: TCloseAction);
...
if HookID <> 0 then UnHookWindowsHookEx(HookID);
...
gruß