Pues que yo sepa con WinExec, no hay manera de saber cuando termina, porque según he experimentado inicia un hilo y devuelve el control al programa, con lo cual podemos pensar que ha terminado pero sigue en el hilo iniciado hasta que termina.
Un truco sucio, pero que resulta, sería crear un fichero bat, con las instrucciones pertinentes, pero la primera sería crear un fichero temporal, la segunda hacer la copia de seguridad y la tercer eliminar el fichero temporal y así nosotros desde Delphi esperaríamos hasta que el fichero temporal se eliminara.
Puede quedar algo como esto.
Código:
dir *.txt >espera
C:\Control\ARJ.exe e -y A:\SBDCont.ARJ C:\Control
del espera
Entonces desde WinExec llamaríamos a este Bat y no directamente a ARj.
Un Saludo.