type
TForm1 = class(TForm)
Memo1: TMemo;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure AppMessage(var Msg: Tmsg; var Handled: Boolean);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses ShellAPI;
{$R *.DFM}
{ TForm1 }
procedure TForm1.AppMessage(var Msg: Tmsg; var Handled: Boolean);
const
BufferLength : DWORD = 511;
var
DroppedFilename : string;
FileIndex : DWORD;
NumDroppedFiles : DWORD;
pDroppedFilename : array [0..511] of Char;
DroppedFileLength : DWORD;
begin
if Msg.message = WM_DROPFILES then
begin
FileIndex := $FFFFFFFF;
NumDroppedFiles := DragQueryFile(Msg.WParam, FileIndex,pDroppedFilename, BufferLength);
for FileIndex := 0 to (NumDroppedFiles - 1) do
begin
DroppedFileLength := DragQueryFile(Msg.WParam, FileIndex,
pDroppedFilename,
BufferLength);
DroppedFilename := StrPas(pDroppedFilename);
Memo1.Lines.Add(DroppedFileName);
{ process the file name you just received }
end;
DragFinish(Msg.WParam); { important to free memory }
Handled := true;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(memo1.Handle, true);
Application.OnMessage := AppMessage;
end;