エクスプローラからファイルをドラッグ&ドロップしてファイル名を得る

DragQueryFileを用いて取得する。

uses
Windowss,
...
ShellAPI; // ShellAPIを追加

type
TMainForm = class(TForm)
ListBox: TListBox;
procedure FormCreate(Sender: TObject);
private
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
end;

...

procedure TMainForm.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;

procedure TResizeForm.WMDropFiles(var Msg: TWMDropFiles);
var
FileName: array of Char;
i, n, size: Integer;
begin
n := DragQueryFile(Msg.Drop, $FFFFFFFF, nil, 0);

for i := 0 to n - 1 do
begin
size := DragQueryFile(Msg.Drop, i, nil, 0) + 1;
SetLength(FileName, size);
DragQueryFile(Msg.Drop, i, PChar(FileName), size);
ListBox.Items.Add(String(FileName));
end;
DragFinish(Msg.Drop);
end;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です