Drag & Drop, "SysDragImage". .
( , ):
procedure WinEventProc(hWinEventHook: THandle; event: DWORD;
hwnd: HWND; idObject, idChild: Longint; idEventThread, dwmsEventTime: DWORD); stdcall;
var
ClassName: string;
begin
SetLength(ClassName, 255);
SetLength(ClassName, GetClassName(hWnd, pchar(ClassName), 255));
if pchar(ClassName) = 'SysDragImage' then
begin
if event = EVENT_OBJECT_CREATE then
Form1.Memo1.Lines.Add('Drag Start')
else
Form1.Memo1.Lines.Add('Drag End');
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FEvent1 := SetWinEventHook(EVENT_OBJECT_CREATE, EVENT_OBJECT_CREATE, 0, @WinEventProc, 0, 0, WINEVENT_OUTOFCONTEXT);
FEvent2 := SetWinEventHook(EVENT_OBJECT_DESTROY, EVENT_OBJECT_DESTROY, 0, @WinEventProc, 0, 0, WINEVENT_OUTOFCONTEXT);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWinEvent(FEvent1);
UnhookWinEvent(FEvent2);
end;
, Escape , EVENT_OBJECT_DESTROY. EVENT_OBJECT_CREATE , .