Kopiowanie, przenoszenie i kasowanie plików z użyciem "latających folderów"

Do operacji kopiowania, przenoszenia i kasowania plików z użyciem latających folderów służy ta sama funkcja Windows API SHFileOperation. Przed jej użyciem należy dołączyć do projektu plik shellapi.h.

Aby po kliknięciu przycisku Button1 skopiować plik z użyciem "latający folderów":

Unit1.cpp

#include <shellapi.h>
void __fastcall
TForm1::Button1Click(TObject *Sender)
{
   SHFILEOPSTRUCT fos;
   fos.hwnd = Handle;
   //operacja kopiowania
   fos.wFunc = FO_COPY;
   //plik źródłowy
   fos.pFrom = "c:\\plik1.txt\0";
   //plik docelowy
   fos.pTo = "c:\\moje dokumenty\\plik2.txt\0";
   fos.fFlags = 0;
   SHFileOperation(&fos);
}

Aby po kliknięciu przycisku Button2 przenieść plik z użyciem "latający folderów":

Unit1.cpp

#include <shellapi.h>
void __fastcall
TForm1::Button2Click(TObject *Sender)
{
   SHFILEOPSTRUCT fos;
   fos.hwnd = Handle;
   //operacja przenoszenia
   fos.wFunc = FO_MOVE;
   //plik źródłowy
   fos.pFrom = "c:\\plik1.txt\0";
   //plik docelowy
   fos.pTo = "c:\\moje dokumenty\\plik2.txt\0";
   fos.fFlags = 0;
   SHFileOperation(&fos);
}

Aby po kliknięciu przycisku Button3 usunąć plik z użyciem "latający folderów":

Unit1.cpp

#include <shellapi.h>
void __fastcall
TForm1::Button3Click(TObject *Sender)
{
   SHFILEOPSTRUCT fos;
   fos.hwnd = Handle;
   //operacja przenoszenia
   fos.wFunc = FO_DELETE;
   //plik do kasowania
   fos.pFrom = "c:\\moje dokumenty\\plik2.txt\0";
   fos.fFlags = 0;
   SHFileOperation(&fos);
}

Należy zwrócić uwagę na podwójny backslash oddzielający katalogi, i na znak końca łańcucha \0 przy podawaniu ścieżek dostępu do plików źródłowych i docelowych. Można także przy podawaniu ścieżek plików źródłowych używać znaków ? i *.