Bonjour,

J'ai un fichier exe, qui va executer (sous un windows XP et/ou 2003) un autre exe (batch console), qui malheureusement ne renvoie rien à l'écran.

j'essaye donc de modifer l'appli pour qu'elle vérifie si le programme lancé par l'appli 1 vérifie de temps à autres que l'appli 2 tourne toujours... Si c'est terminé, alors on peut passer à la suite ...

voila mon code :

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
38
39
40
41
42
43
 
bool v_testProcess = false ;
string v_Output = "" ;
[...]
System.Diagnostics.Process v_prc = new System.Diagnostics.Process ();
v_prc.EnableRaisingEvents = true;
 
v_prc.StartInfo.FileName = "monfichier.exe" ;
v_prc.StartInfo.Arguments = "monargument" ;
v_prc.StartInfo.RedirectStandardOutput = true ;
v_prc.StartInfo.ErrorDialog = false;
v_prc.StartInfo.UseShellExecute = false; 
 
 try
 {
    /* PART 1 / EXE DU BATCH */
    // execute le process (batch + fichier)
    v_prc.Start ();
    while (!v_testProcess)
    {
       if (v_prc.HasExited)
       {
          v_Output = v_prc.StandardOutput.ReadToEnd().ToString();
          v_testProcess = true ;
       }
       v_prc.WaitForExit(20);
    }
       // creation du fichier Logfile
       string v_logfile = "LogMonFichier" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".log" ;
       FileStream fs = new FileStream(pRepLogs + "\\" +  v_logfile,FileMode.Append);
       StreamWriter sw = new StreamWriter(fs);
       sw.Write(v_Output);
       sw.Close();
       fs.Close();	    
 
 
}
catch 
{
[...]
v_prc.Close (); 
v_prc.Dispose ();
}
Sauf que ca n'a pas trop l'air de fonctionner :
le 1er programme reste bien en exécution ..
mais le 2e a l'air de s'interrompre, car je ne le vois plus dans le gestionnaire des tâches (le traitement est long, il dure plus d'une heure).

Bref, si vous avez des idées ..
Merci d'avance,
K.