Bonjour,

Le code ci-dessous issus de la FAQ développez.com ( :-) ) me permet de lancer un programme et d'en attendre la fermeture.

Cela fonctionne parfaitement pour WordPad.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
36
37
 
function LancerEditeur(NomEditeur, fichier :string)
Var  StartInfo   : TStartupInfo;
     ProcessInfo : TProcessInformation;
     Fin         : Boolean;
     Process     : string;
begin
  // Lancer le document et attendre sa fermeture
  { 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);
  Process := '"' + NomEditeur + '"';
  if trim(fichier)<>'' then
    Process := Process + ' "'+fichier+'"';
  { Lancement de la ligne de commande }
  If CreateProcess(Nil, Pchar(Process), Nil, Nil, False,
                0, Nil, Nil, StartInfo,ProcessInfo) Then
  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
  Else RaiseLastOSError;
end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
LancerEditeur('c:\Program Files\Windows NT\Accessoires\WORDPAD.EXE', 'c:\MonFichier.txt');
Me lance bien wordpad et charge le fichier MonFichier.txt, mon programme attend que wordpad soit fermé pour poursuivre. (Affichage de la boite de dialogue 'Terminé').
Et ce qu'il y ait deja un wordpad en mémoire ou non.

Si au lieu d'invoquer wordpad j'essaye avec winword ou OpenOffice write, celà fonctionne également sauf si une instance était déjà en mémoire. Dans ce cas il me charge bien MonFichier.txt (sans toucher au document de l'instance deja en mémoire) MAIS mon programme affiche directement le message 'Terminé' alors que l'instance n'est pas encore fermée.

Si quelqu'un aurait une idée ou une solution ?

J'ai deja essayé pas mal de choses et croyais avoir trouvé ici :
http://www.developpez.net/forums/d49...ject/#post2694
mais ca ne fonctionne pas chez moi.

Merci d'avance.