- //------------------------------------------------------------------------------
- // 删除目录
- //------------------------------------------------------------------------------
- function DelDirectory(const Source: string): boolean;
- var
- fo: TSHFILEOPSTRUCT;
- begin
- FillChar(fo, SizeOf(fo), 0);
- with fo do
- begin
- Wnd := 0;
- wFunc := FO_DELETE;
- pFrom := PChar(source + #0);
- pTo := #0#0;
- fFlags := FOF_NOCONFIRMATION + FOF_SILENT;
- end;
- Result := (SHFileOperation(fo) = 0);
- end;
- //------------------------------------------------------------------------------
- // 复制目录
- //------------------------------------------------------------------------------
- function CopyDirectory(const Source, Dest: string): boolean;
- var
- fo: TSHFILEOPSTRUCT;
- begin
- FillChar(fo, SizeOf(fo), 0);
- with fo do
- begin
- Wnd := 0;
- wFunc := FO_COPY;
- pFrom := PChar(source + #0);
- pTo := PChar(Dest + #0);
- fFlags := FOF_NOCONFIRMATION + FOF_NOCONFIRMMKDIR;
- end;
- Result := (SHFileOperation(fo) = 0);
- end;
- //------------------------------------------------------------------------------
- // 重新命名目录 RenDirectory('d:/wt2','d:/bcde');
- //------------------------------------------------------------------------------
- function RenDirectory(const OldName, NewName: string): boolean;
- var
- fo: TSHFILEOPSTRUCT;
- begin
- FillChar(fo, SizeOf(fo), 0);
- with fo do
- begin
- Wnd := 0;
- wFunc := FO_RENAME;
- pFrom := PChar(OldName + #0);
- pTo := pchar(NewName + #0);
- fFlags := FOF_NOCONFIRMATION + FOF_SILENT;
- end;
- Result := (SHFileOperation(fo) = 0);
- end;
- //------------------------------------------------------------------------------
- // 复制多个文件
- //------------------------------------------------------------------------------
- function CopyFiles(const Source, Dest: string): boolean;
- var
- fo: TSHFILEOPSTRUCT;
- begin
- FillChar(fo, SizeOf(fo), 0);
- with fo do
- begin
- Wnd := 0;
- wFunc := FO_COPY;
- pFrom := @source[1];
- pTo := pchar(dest);
- fFlags := FOF_NOCONFIRMATION + FOF_NOCONFIRMMKDIR;
- end;
- Result := (SHFileOperation(fo) = 0);
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- var
- str: string;
- i: integer;
- begin
- if opendialog1.Execute then
- begin
- for i := 0 to OpenDialog1.Files.Count - 1 do
- str := str + OpenDialog1.Files.strings[i] + #0;
- showmessage(str);
- str := str + #0;
- CopyFiles(str, 'd:/temp');
- end;
- end;
注:需要引用ShellAPI单元