Mit diesem Code kan man Daten vom Explorer aus in eine Listbox ziehen:
Delphi-Quellcode:
uses
ShellAPI;
var
OldLBWindowProc: TWndMethod;
procedure TForm1.AddFile(sFileName: string);
begin
ListBox1.Items.Add(sFilename);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OldLBWindowProc := ListBox1.WindowProc;
ListBox1.WindowProc := LBWindowProc;
DragAcceptFiles(ListBox1.Handle, True);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ListBox1.WindowProc := OldLBWindowProc;
DragAcceptFiles(ListBox1.Handle, False);
end;
procedure TForm1.LBWindowProc(var Message: TMessage);
begin
if Message.Msg = WM_DROPFILES then
WMDROPFILES(Message);
OldLBWindowProc(Message);
end;
procedure TForm1.WMDROPFILES(var Msg: TMessage);
var
pcFileName: PChar;
i, iSize, iFileCount: integer;
begin
pcFileName := '';
iFileCount := DragQueryFile(Msg.wParam, $FFFFFFFF, pcFileName, 255);
for i := 0 to iFileCount - 1 do
begin
iSize := DragQueryFile(Msg.wParam, i, nil, 0) + 1;
pcFileName := StrAlloc(iSize);
DragQueryFile(Msg.wParam, i, pcFileName, iSize);
if FileExists(pcFileName) then
AddFile(pcFileName);
StrDispose(pcFileName);
end;
DragFinish(Msg.wParam);
end;
Nun wollte ich fragen ob das irgendwie anderesrum auch möglich wäre?
Vielleicht hat das schon mal jemand gemacht und kann mir helfen.
Danke UC