Hola,
¿Porqué no pruebas con la función "CopyFileEx" o con la función "ShFileOperation"? En el caso de esta última quedaría más o menos como sigue, de tal modo que se muestre una ventana de progreso mientras se copia el archivo y además la interfaz de tu aplicación no se vea "retenida".
Código Delphi
[-]
uses
Windows, ShellApi;
function CopiarArchivo(const archivoOrigen,
archivoDestino: string) : boolean;
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), #0);
with FileOp do
begin
wFunc := FO_COPY;
Wnd := GetDesktopWindow;
pFrom := PChar(archivoOrigen+#0);
pTo := PChar(archivoDestino+#0);
lpszProgressTitle := 'Copiando...';
fFlags := FOF_SIMPLEPROGRESS or FOF_ALLOWUNDO;
end;
Result := (ShFileOperation(FileOp) = 0);
end;