Bonjour

J'ai un exécutable de type console qui réalise des calculs et qui à chaque étape de calcul terminée imprime sur l'écran une information du type #PROG xx (où xx représente un nombre entre 0 et 100)

Après quelque recherche j'ai trouvé ce code qui me permet d'exécuter mon programme de calcul.

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
 
procedure TForm1.exec;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
  CommandLine: {$IFDEF UNICODE}WideString{$ELSE}string{$ENDIF};
 
begin
  CommandLine := '"calcullong.exe"';
 
  ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
  StartupInfo.cb := SizeOf(StartupInfo);
 
  if CreateProcess(nil, PChar(CommandLine), nil, nil, FALSE, 0, nil, nil, StartupInfo, ProcessInfo) then
  begin
    repeat
      Application.ProcessMessages;
    until WaitForSingleObject(ProcessInfo.hProcess, 200) <> WAIT_TIMEOUT;
 
    CloseHandle(ProcessInfo.hProcess);
    CloseHandle(ProcessInfo.hThread);
  end
  else RaiseLastOSError;
end;
J'aimerai savoir maintenant comment je peux récupérer les information de progression qui sont envoyé par le programme de calcul.

Je me doute qu'il faille mettre une instruction dans cette boucle mais je n'ai pas trouvé laquelle.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
    repeat
      Application.ProcessMessages;
      //récupération des info de progression
 
    until WaitForSingleObject(ProcessInfo.hProcess, 200) <> WAIT_TIMEOUT;
Si vous avez des idées je suis preneur