Hallo Peter,
da es sich bei dem Windows Explorer um eine andere Anwendung handelt, als die, die Du in DELPHI programmierst, kannst Du die Dateinamen nicht über die Delphi-Drag&Drop-Funktionen Deiner Anwendung erhalten. Füge die folgende Prozedur in Dein Formular ein und trage sie in den Public-Bereich ein:
unit Unit1;
interface
uses ...
type
TForm1 = class(TForm)
...
private
...
public
procedure WndProc(var Msg: TMessage); override;
end;
implementation
procedure TForm1.WndProc(var Msg: TMessage);
var Num: Word;
Buff: Array[0..255] of Char;
N: Integer;
Pkt: TPoint;
begin
if (Msg.Msg = WM\_DropFiles) then begin
Msg.Result := 0;
Num := DragQueryFile(Msg.wParam, $FFFFFFFF, NIL, 0);
For N := 0 to Num-1 do begin
DragQueryFile(Msg.wParam, n, @buff, pred(SizeOf(buff)));
DragQueryPoint(Msg.wParam, Pkt);
if FileExists(StrPas(buff)) then
ListBox1.Items.Add(StrPas(buff));
end;
DragFinish(Msg.wParam);
end
else
inherited WndProc(Msg);
end;
In diesem Beispiel fülle ich eine Listbox mit den Dateinamen. Das kannst Du ja entsprechend Deiner Anwendung abändern.
Nun musst Du noch in die OnCreate-Routine für Dein Formular die Zeile
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;
eintragen, dann sollte es funktionieren.
Viele Grüße
Dieter