procedure CopyDirectoryTree

procedure  CopyDirectoryTree(AHandle:  THandle;  const  AFromDirectory,  AToDirectory:  String);
var
 SHFileOpStruct:  TSHFileOpStruct;
 FromDir:  PChar;
 ToDir:  PChar;
begin

 GetMem(FromDir,  Length(AFromDirectory)+2);
 try
     GetMem(ToDir,  Length(AToDirectory)+2);  
     try  
 
         FillChar(FromDir^,  Length(AFromDirectory)+2,  0);  
         FillChar(ToDir^,  Length(AToDirectory)+2,  0);
 
         StrCopy(FromDir,  PChar(AFromDirectory));  
         StrCopy(ToDir,  PChar(AToDirectory));  
 
         with  SHFileOpStruct  do  
         begin
             Wnd        :=  AHandle;      //  Assign  the  window  handle  
             wFunc    :=  FO_COPY;    //  Specify  a  file  copy  
             pFrom    :=  FromDir;  
             pTo        :=  ToDir;  
             fFlags  :=  FOF_NOCONFIRMATION  or  FOF_RENAMEONCOLLISION;  
             fAnyOperationsAborted  :=  False;  
             hNameMappings  :=  nil;
             lpszProgressTitle  :=  nil;  
             if  SHFileOperation(SHFileOpStruct)  <>  0  then  
                 RaiseLastWin32Error;  
         end;  
     finally  
         FreeMem(ToDir,  Length(AToDirectory)+2);  
     end;
 finally  
     FreeMem(FromDir,  Length(AFromDirectory)+2);  
 end;  
end;

posted on 2010-11-23 18:58  haiou327'Blog  阅读(113)  评论(0)    收藏  举报

导航