Для использования такого File Manager Drag&Drop, добавьте метод в форму,
который будет обрабатывать сообщение WM_DROPFILES. Например, поместите
в секцию private в декларации TForm1 строку:
...
procedure WMDropFiles(var msg : TMessage); message WM_DROPFILES;
...
Вы должны активировать drag&drop вызовом процедуры DragAcceptFiles() в
обработчике события OnCreate, и деактивировать последующим вызовом
DragAcceptFiles() в обработчике события OnClose или OnDestroy.
Пример:
procedure TForm1.WMDropFiles(var Msg : TMessage);
var
i, n : Word;
Size : Word;
FName : String;
HDrop : Word;
begin
{1. Получить handle того, что бросили на форму}
HDrop := Msg.WParam;
{2. Сколько файлов брошено?}
n := DragQueryFile(HDrop, $FFFF, NIL, 0);
{3. Цикл чтения имен файлов}
for i := 0 to (n - 1) do begin
{4. Получить размер имени файла}
Size := DragQueryFile(HDrop, i, NIL, 0);
{5. Размер строки<255 символов?}
if Size < 255 then begin
FName[0] := Chr(Size);
{6. Получить имя файла}
DragQueryFile(HDrop, i, @FName[1], Size + 1);
{-- Далее делаете все, что хотите с этим файлом. --}
end;
end;
{7. Возвращаем ноль.}
Msg.Result := 0;
{8. Вызов унаследованного обработчика сообщения}
inherited;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, true);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DragAcceptFiles(Handle, false);
end;
Помните, что это все относится не обязательно к окну. Любой объект,
имеющий свойство HWnd (наследник TWinControl) может принимать файлы при
drag&drop.
Для того, чтобы минимизированное приложение отвечало на drag&drop файлов,
нужно использовать Application.Handle. В этом случае требуется создать
обработчик события OnMessage, который следит за сообщением WM_DROPFILES.