可以用SHFileOperation SHFILEOPSTRUCT Structure--------------------------------------------------------------------------------Contains information that the SHFileOperation function uses to perform file operations. Syntaxtypedef struct _SHFILEOPSTRUCT { HWND hwnd; UINT wFunc; LPCTSTR pFrom; LPCTSTR pTo; FILEOP_FLAGS fFlags; BOOL fAnyOperationsAborted; LPVOID hNameMappings; LPCTSTR lpszProgressTitle; } SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT; Membershwnd Window handle to the dialog box to display information about the status of the file operation. wFunc Value that indicates which operation to perform. This member can be one of the following values: FO_COPY Copy the files specified in the pFrom member to the location specified in the pTo member. FO_DELETE Delete the files specified in pFrom. FO_MOVE Move the files specified in pFrom to the location specified in pTo. FO_RENAME Rename the file specified in pFrom. You cannot use this flag to rename multiple files with a single function call. Use FO_MOVE instead. pFrom Address of a buffer to specify one or more source file names. These names must be fully qualified paths. Standard Microsoft® MS-DOS® wild cards, such as "*", are permitted in the file-name position. Although this member is declared as a null-terminated string, it is used as a buffer to hold multiple file names. Each file name must be terminated by a single NULL character. An additional NULL character must be appended to the end of the final name to indicate the end of pFrom. pTo Address of a buffer to contain the name of the destination file or directory. This parameter must be set to NULL if it is not used. Like pFrom, the pTo member is also a double-null terminated string and is handled in much the same way. However, pTo must meet the following specifications: Wildcard characters are not supported. Copy and Move operations can specify destination directories that do not exist and the system will attempt to create them. The system normally displays a dialog box to ask the user if they want to create the new directory. To suppress this dialog box and have the directories created silently, set the FOF_NOCONFIRMMKDIR flag in fFlags. For Copy and Move operations, the buffer can contain multiple destination file names if the fFlags member specifies FOF_MULTIDESTFILES. Pack multiple names into the string in the same way as for pFrom. Use only fully-qualified paths. Using relative paths will have unpredictable results. fFlags Flags that control the file operation. This member can take a combination of the following flags: FOF_ALLOWUNDO Preserve Undo information, if possible. If pFrom does not contain fully qualified path and file names, this flag is ignored. FOF_CONFIRMMOUSE Not currently used. 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 Do not confirm the creation of a new directory if the operation requires one to be created. FOF_NO_CONNECTED_ELEMENTS Version 5.0. Do not move connected files as a group. Only move the specified files. FOF_NOCOPYSECURITYATTRIBS Version 4.71. Do not copy the security attributes of the file. FOF_NOERRORUI Do not display a user interface if an error occurs. FOF_NORECURSION Only operate in the local directory. Don't operate recursively into subdirectories. FOF_NORECURSEREPARSE Treat reparse points as objects, not containers. You must set _WIN32_WINNT to 5.01 or later to use this flag. See Shell and Common Controls Versions for further discussion of versioning. 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 Do not display a progress dialog box. FOF_SIMPLEPROGRESS Display a progress dialog box but do not show the file names. FOF_WANTMAPPINGHANDLE If FOF_RENAMEONCOLLISION is specified and any files were renamed, assign a name mapping object containing their old and new names to the hNameMappings member. FOF_WANTNUKEWARNING Version 5.0. Send a warning if a file is being destroyed during a delete operation rather than recycled. This flag partially overrides FOF_NOCONFIRMATION. fAnyOperationsAborted Value that receives TRUE if the user aborted any file operations before they were completed, or FALSE otherwise. hNameMappings A handle to a name mapping object containing the old and new names of the renamed files. This member is used only if the fFlags member includes the FOF_WANTMAPPINGHANDLE flag. See Res for more details. 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.
使用系统的Copy文件框 use shlobj; function ShellFileCopy (AHandle:HWND;AFrom:string;ATo:String):boolean; var shFileOpRec:TSHFileOpStruct ; begin result := true ; // ah optimism if ( AFrom = '' ) or ( ATo = '' ) then begin result := false ; end ; with shFileOpRec do begin Wnd := AHandle ; // the window which owns this dialog wFunc := FO_COPY ; // what kind of operation pFrom := PAnsiChar(AFrom) ; // from pTo := PAnsiChar(ATo) ; // to fFlags := FOF_FILESONLY and FOF_ALLOWUNDO and FOF_SIMPLEPROGRESS; hNameMappings := nil; // Pointer; // only used if FOF_SIMPLEPROGRESS lpszProgressTitle := nil ; // check if file operation was aborted or not. if ( fAnyOperationsAborted = true ) then result := false ; end; // with // run the actual operation now if (SHFileOperation (shFileOpRec) = 0 ) then result := false ; end;
SHFILEOPSTRUCT Structure--------------------------------------------------------------------------------Contains information that the SHFileOperation function uses to perform file operations. Syntaxtypedef struct _SHFILEOPSTRUCT {
HWND hwnd;
UINT wFunc;
LPCTSTR pFrom;
LPCTSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
LPCTSTR lpszProgressTitle;
} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;
Membershwnd
Window handle to the dialog box to display information about the status of the file operation.
wFunc
Value that indicates which operation to perform. This member can be one of the following values:
FO_COPY
Copy the files specified in the pFrom member to the location specified in the pTo member.
FO_DELETE
Delete the files specified in pFrom.
FO_MOVE
Move the files specified in pFrom to the location specified in pTo.
FO_RENAME
Rename the file specified in pFrom. You cannot use this flag to rename multiple files with a single function call. Use FO_MOVE instead.
pFrom
Address of a buffer to specify one or more source file names. These names must be fully qualified paths. Standard Microsoft® MS-DOS® wild cards, such as "*", are permitted in the file-name position. Although this member is declared as a null-terminated string, it is used as a buffer to hold multiple file names. Each file name must be terminated by a single NULL character. An additional NULL character must be appended to the end of the final name to indicate the end of pFrom.
pTo
Address of a buffer to contain the name of the destination file or directory. This parameter must be set to NULL if it is not used. Like pFrom, the pTo member is also a double-null terminated string and is handled in much the same way. However, pTo must meet the following specifications:
Wildcard characters are not supported.
Copy and Move operations can specify destination directories that do not exist and the system will attempt to create them. The system normally displays a dialog box to ask the user if they want to create the new directory. To suppress this dialog box and have the directories created silently, set the FOF_NOCONFIRMMKDIR flag in fFlags.
For Copy and Move operations, the buffer can contain multiple destination file names if the fFlags member specifies FOF_MULTIDESTFILES.
Pack multiple names into the string in the same way as for pFrom.
Use only fully-qualified paths. Using relative paths will have unpredictable results.
fFlags
Flags that control the file operation. This member can take a combination of the following flags:
FOF_ALLOWUNDO
Preserve Undo information, if possible. If pFrom does not contain fully qualified path and file names, this flag is ignored.
FOF_CONFIRMMOUSE
Not currently used.
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
Do not confirm the creation of a new directory if the operation requires one to be created.
FOF_NO_CONNECTED_ELEMENTS
Version 5.0. Do not move connected files as a group. Only move the specified files.
FOF_NOCOPYSECURITYATTRIBS
Version 4.71. Do not copy the security attributes of the file.
FOF_NOERRORUI
Do not display a user interface if an error occurs.
FOF_NORECURSION
Only operate in the local directory. Don't operate recursively into subdirectories.
FOF_NORECURSEREPARSE
Treat reparse points as objects, not containers. You must set _WIN32_WINNT to 5.01 or later to use this flag. See Shell and Common Controls Versions for further discussion of versioning.
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
Do not display a progress dialog box.
FOF_SIMPLEPROGRESS
Display a progress dialog box but do not show the file names.
FOF_WANTMAPPINGHANDLE
If FOF_RENAMEONCOLLISION is specified and any files were renamed, assign a name mapping object containing their old and new names to the hNameMappings member.
FOF_WANTNUKEWARNING
Version 5.0. Send a warning if a file is being destroyed during a delete operation rather than recycled. This flag partially overrides FOF_NOCONFIRMATION.
fAnyOperationsAborted
Value that receives TRUE if the user aborted any file operations before they were completed, or FALSE otherwise.
hNameMappings
A handle to a name mapping object containing the old and new names of the renamed files. This member is used only if the fFlags member includes the FOF_WANTMAPPINGHANDLE flag. See Res for more details.
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.
use shlobj;
function ShellFileCopy (AHandle:HWND;AFrom:string;ATo:String):boolean;
var shFileOpRec:TSHFileOpStruct ;
begin
result := true ; // ah optimism
if ( AFrom = '' ) or ( ATo = '' ) then
begin
result := false ;
end ;
with shFileOpRec do
begin
Wnd := AHandle ; // the window which owns this dialog
wFunc := FO_COPY ; // what kind of operation
pFrom := PAnsiChar(AFrom) ; // from
pTo := PAnsiChar(ATo) ; // to
fFlags := FOF_FILESONLY and
FOF_ALLOWUNDO and
FOF_SIMPLEPROGRESS;
hNameMappings := nil; // Pointer;
// only used if FOF_SIMPLEPROGRESS
lpszProgressTitle := nil ;
// check if file operation was aborted or not.
if ( fAnyOperationsAborted = true ) then
result := false ;
end; // with
// run the actual operation now
if (SHFileOperation (shFileOpRec) = 0 ) then
result := false ;
end;