uses ShellApi ... private procedure WMDROPFILES(var Message: TWMDROPFILES); message WM_DROPFILES; { Private declarations } ... procedure TForm1.WMDROPFILES(var Message: TWMDROPFILES); var NumFiles : longint; i : longint; buffer : array[0..255] of char; begin {How many files are being dropped} NumFiles := DragQueryFile(Message.Drop,-1,nil,0); {Accept the dropped files} for i := 0 to (NumFiles - 1) do begin DragQueryFile(Message.Drop,i,@buffer,sizeof(buffer)); Form1.Memo1.Lines.Add(buffer); end; end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Form1.Handle, True); end;