1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| procedure TForm1.FormCreate(Sender: TObject);
Var StartInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
Fin : Boolean;
F : textFile;
begin
assignFile(F, 'essay.bat');
rewrite(F);
writeln(F, 'test1.LLX');
CloseFile(F);
showMessage('Fin creation .bat');
// Mise à zéro de la structure StartInfo
FillChar(StartInfo,SizeOf(StartInfo),#0);
// Seule la taille est renseignée, toutes les autres options
// laissées à zéro prendront les valeurs par défaut
StartInfo.cb := SizeOf(StartInfo);
// Lancement de la ligne de commande
CreateProcess(Nil, 'essay.bat', Nil, Nil, False, 0, Nil, Nil, StartInfo,ProcessInfo);
Begin
// L'application est bien lancée, on va en attendre la fin
// ProcessInfo.hProcess contient le handle du process principal de l'application
Fin:=False;
Repeat
// On attend la fin de l'application
Case WaitForSingleObject(ProcessInfo.hProcess, 200)Of
WAIT_OBJECT_0 :Fin:=True; // L'application est terminée, on sort
WAIT_TIMEOUT :; // elle n'est pas terminée, on continue d'attendre
End;
// Mise à jour de la fenêtre pour que l'application ne paraisse pas bloquée.
Application.ProcessMessages;
Until Fin;
// C'est fini
ShowMessage('Terminé');
End;
End; |
Partager