Je voudrais que l'application sur laquelle je suis se ferme et soit remplacée par un autre exécutable.

J'ai écrit le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    If ShellExecute(0,'OPEN', PChar(AExe), Nil, Nil, SW_SHOW) > 0 Then Begin
       Result := True;
       Application.Terminate;
    End
    Else
Ca fonctionne correctement dans 99% des cas mais je viens d'avoir un cas où la seconde application a bien été lancée mais ou la première ne s'est pas refermée.
Quelle autre solution peut-il exister que ShellExecute ?