MSDN
MORE INFORMATION
The SHFileOperation function provides the ability to move, rename, or delete file system objects based on the flags passed to the function. The function requires the address of the SHFILEOPSSTRUCT structure. This structure contains the following members:
hwnd - Window handle to the dialog box to display information about the status of the file operation.
wFunc - the operation to perform, as defined by one of the following values:
FO_COPY - Copies the files specified in the pFrom member to the location specified in the pTo member.
FO_DELETE - Deletes the files specified in pFrom. (pTo is ignored.)
FO_MOVE - Moves the files specified in pFrom to the location specified in pTo.
FO_RENAME - Renames the files specified in pFrom.
pFrom - Address of a buffer to specify one or more source file names. Multiple names must be null-separated. The list of names must be double null-terminated.
pTo - Address of a buffer to contain the name of the destination file or directory. The buffer can contain multiple destination file names if the fFlags member specifies FOF_MULTIDESTFILES. Multiple names must be null-separated. The list of names must be double null-terminated.
fFlags - Flags that control the file operation. This member can be a combination of the following flags:
FOF_ALLOWUNDO - Preserve Undo information, if possible.
FOF_CONFIRMMOUSE - Not currently implemented.
FOF_FILESONLY - Perform the operation on files only if a wildcard file name (*.*) is specified.
FOF_MULTIDESTFILES - The pTo member specifies multiple destination files (one for each source file) rather than one directory where all source files are to be deposited.
FOF_NOCONFIRMATION - Respond with Yes to All for any dialog box that is displayed.
FOF_NOCONFIRMMKDIR - Does not confirm the creation of a new directory if the operation requires one to be created.
FOF_NOERRORUI - No user interface will be displayed if an error occurs.
FOF_RENAMEONCOLLISION - Give the file being operated on a new name in a move, copy, or rename operation if a file with the target name already exists.
FOF_SILENT - Does not display a
progress dialog box.
FOF_SIMPLEPROGRESS - Displays a
progress dialog box but does not show the file names.
FOF_WANTMAPPINGHANDLE - If FOF_RENAMEONCOLLISION is specified, the hNameMappings member will be filled in if any files were renamed.
fAnyOperationsAborted - Value that receives TRUE if the user aborted any file operations before they were completed, or FALSE otherwise.
hNameMappings - Handle to a file name mapping object that contains an array of SHNAMEMAPPING structures. Each structure contains the old and new path names for each file that was moved, copied, or renamed. This member is used only if the fFlags member includes the FOF_WANTMAPPINGHANDLE flag. The handle must be freed by using the SHFreeNameMappings function.
lpszProgressTitle - Address of a string to use as the title of a
progress dialog box. This member is used only if fFlags includes the FOF_SIMPLEPROGRESS flag.
NOTE: The 32-bit version of Visual Basic aligns structures at double-word boundaries, but some API functions, such as the SHFileOperation, expect the data to arrive as byte-aligned. If you pass the SHFILEOPSTRUCT structure without taking this double-word boundary into consideration, the fAnyOperationsAborted, hNameMappings, and the lpszProgressTitle members of the structure will not be passed correctly. If you want the copy dialog box to contain a custom message string as defined by the lpszProgressTitle member, use a byte array to work around this limitation. The use of a byte array is demonstrated in the sample project.