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
|