Použití dialogového okna Kopírovat z Exploreru

Také jste někdy chtěli do svých aplikací zahrnout okno, které se při kopírování objeví v Exploreru ? Ok, není to těžké naprogramovat, a lze využít mnoha možností pro zlepšení funkcí Vaší aplikace. Jen jedno malé varování na začátek: pomocí následujících funkcí si můžete slíznout celé adresáře bez varování; doporučuji tudíž vytvořit si nějaký adresář k testování a používat raději ten, než ostré adresáře.

Veškeré dialogy jsou založeny na jedné funkci, SHFileOperation. Je velice jednoduché ji používat, a má pouze jeden parametr,  uživatelsky definovaný typSHFILEOPSTRUCT . Zde jsou veškeré deklarace, které budete potřebovat:

Public Declare Function SHFileOperation Lib _
"shell32.dll" Alias "SHFileOperationA" (lpFileOp As Any) As Long

Public Declare Sub SHFreeNameMappings Lib _
"shell32.dll" (ByVal hNameMappings As Long)

Public Declare Sub CopyMemory Lib "KERNEL32" _
Alias "RtlMoveMemory" (hpvDest As Any, hpvSource _
As Any, ByVal cbCopy As Long)

Public Type SHFILEOPSTRUCT
   hwnd As Long
   wFunc As FO_Functions
   pFrom As String
   pTo As String
   fFlags As FOF_Flags
   fAnyOperationsAborted As Long
   hNameMappings As Long
   lpszProgressTitle As String 
End Type

Public Enum FO_Functions
   FO_MOVE = &H1
   FO_COPY = &H2
   FO_DELETE = &H3
   FO_RENAME = &H4
End Enum

Public Enum FOF_Flags
   FOF_MULTIDESTFILES = &H1
   FOF_CONFIRMMOUSE = &H2
   FOF_SILENT = &H4
   FOF_RENAMEONCOLLISION = &H8
   FOF_NOCONFIRMATION = &H10
   FOF_WANTMAPPINGHANDLE = &H20
   FOF_ALLOWUNDO = &H40
   FOF_FILESONLY = &H80
   FOF_SIMPLEPROGRESS = &H100
   FOF_NOCONFIRMMKDIR = &H200
   FOF_NOERRORUI = &H400
   FOF_NOCOPYSECURITYATTRIBS = &H800
   FOF_NORECURSION = &H1000
   FOF_NO_CONNECTED_ELEMENTS = &H2000
   FOF_WANTNUKEWARNING = &H4000
End Enum

Public Type SHNAMEMAPPING
   pszOldPath As String
   pszNewPath As String
   cchOldPath As Long
   cchNewPath As Long
End Type

 Další

Autor: The Bozena