Du musst Windows sagen, dass dein Programm Dateien per Drag & Drop akzeptiert. Und dann musst du deine TForm um eine Nachrichtenschleife erweitern.
Delphi-Quellcode:
type
TForm1 = class(TForm)
...
private
{ Private-Deklarationen }
procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
...
end;
uses ShellAPI;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Self.Handle, True);
end;
Delphi-Quellcode:
procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
var
Buffer: array[0..MAX_PATH] of Char;
begin
DragQueryFile(Message.Drop, 0, @Buffer, SizeOf(Buffer));
Edit1.Text := Buffer;
end;
Wenn du mehrere Dateien auswerten willst, musst du den Rückgabewert von DragQueryFile auswerten und in einer Schleife DragQueryFile aufrufen.
Delphi-Quellcode:
procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
var
Count: Integer;
I: Integer;
Buffer: array[0..MAX_PATH] of Char;
begin
Memo1.Clear;
Count := DragQueryFile(Message.Drop, UINT(-1), nil, 0);
for I := 0 to Count - 1 do
begin
DragQueryFile(Message.Drop, I, @Buffer, SizeOf(Buffer));
Memo1.Lines.Add(Buffer);
end;
end;