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;