Bonjour à tous,

Aujourd'hui je m'essaye à récupérer le message et le code de retour d'une fonction envoyée sur le terminal (cmd.exe)
J'ai essayé un nombre important de solutions à partir de la commande CreateProcess sans parvenir à un résultat cohérent
par exemple :
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
 
    if CreateProcess(nil, PChar('cmd.exe /c ' + CommandLine),
      nil, nil, True, CREATE_NO_WINDOW, nil, nil, StartupInfo, ProcessInfo) then
    begin
      // ------ essai 1 ---- lire aOutput, devrait renvoyer le code d'erreur
      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
      GetExitCodeProcess(ProcessInfo.hProcess, aOutPut);
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
 
      // ------ essai 2 ---- lire OutputStr devrait renvoyer le message
      ZeroMemory(@Buffer, SizeOf(Buffer));
      CloseHandle(StdOutPipeWrite);
 
      while ReadFile(StdOutPipeRead, Buffer, SizeOf(Buffer) - 1, BytesRead, nil) and (BytesRead > 0) do
      begin
        Buffer[BytesRead] := #0;
        OutputStr := OutputStr + string(Buffer);
      end;
 
      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
 
      Result := Trim(OutputStr);
    end;
Et à chaque fois, le message renvoyé dit que "n'est pas reconnu ..."

J'essaye la commande : java -version
Dans le terminal, pas de soucis quand j'envoie la commande "cmd.exe /c java -version" mais avec le code, ça ne fonctionne pas.

Vous pouvez m'aider ?