procedure TMainForm.CopyFileByFolder(Ahandle: THandle; fromDir,
? toDir: String);
var
? SHFileOpStruct: TSHFileOpStruct;
? pFromDir, pToDir: PAnsiChar;
begin
? GetMem(pFromDir, Length(fromDir)+2);
? try
??? GetMem(pToDir, Length(toDir)+2);
??? try
????? FillChar(pFromDir^, Length(fromDir)+2, 0);
????? FillChar(pToDir^, Length(toDir)+2, 0);
????? StrCopy(pFromDir, PChar(fromDir));
????? StrCopy(pToDir, PChar(toDir));
????? with SHFileOpStruct do
????? begin
??????? Wnd??? := AHandle;?? // Assign the window handle
??????? wFunc? := FO_COPY;? // Specify a file copy
??????? pFrom? := pFromDir;
??????? pTo??? := pToDir;
??????? fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
??????? fAnyOperationsAborted := True;
??????? hNameMappings := nil;
??????? lpszProgressTitle := nil;
??????? if SHFileOperation(SHFileOpStruct) <> 0 then
????????? RaiseLastWin32Error;
????? end;
??? finally
????? FreeMem(pToDir, Length(ToDir)+2);
??? end;
? finally
??? FreeMem(pFromDir, Length(FromDir)+2);
? end;
end;