salut à tous, j'ai un programme fortran s'éxécutant dans une console, et je le lance à partir d'une ihm en delphi qui récupère son PID pour tracé l'occupation mémoire et CPU du processus. tout ça marche bien mais, j'aimerai ajouter deux chose: la première, ne pas ouvrir de fenetre console pour l'exécution du process, et afficher ce qui devrai être en consol dans mon IHM (dans un TMemo par exemple)

voici le code de lancement de mon appli:

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
44
45
46
//==============================================================================
//=== Lance une application et retourne le process ID
//==============================================================================
Function StartAndGetProcessID(Command: String): DWord;
Var
  lpsaProcess: PSecurityAttributes;
  lpsaThread: PSecurityAttributes;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
  AddrCmd: Array[0..255] Of Char;
  ReturnValue: BOOL;
Begin
  FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
  With StartupInfo Do
  Begin
    cb := SizeOf(TStartupInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := SW_SHOW;
  End;
  New(lpsaProcess);
  New(lpsaThread);
  Try
    lpsaProcess^.nLength := SizeOf(lpsaProcess^);
    lpsaProcess^.lpSecurityDescriptor := Nil;
    lpsaProcess^.bInheritHandle := True;
 
    lpsaThread^.nLength := SizeOf(lpsaThread^);
    lpsaThread^.lpSecurityDescriptor := Nil;
    lpsaThread^.bInheritHandle := True;
 
    StrPCopy(AddrCmd, Command);
    ReturnValue := CreateProcess(Nil, AddrCmd, lpsaProcess, lpsaThread, False,
      0, Nil, Nil, StartupInfo, ProcessInfo);
  Finally
    Dispose(lpsaProcess);
    Dispose(lpsaThread);
  End;
  result := 0;
  If ReturnValue Then
  Begin
    result := ProcessInfo.dwProcessId;
    SEtThreadIdealProcessor(ProcessInfo.hThread,0);
  End;
  CloseHandle(ProcessInfo.hThread);
  CloseHandle(ProcessInfo.hProcess);
End;
note, l'affichage dans la console se fait en unicode, et je sais que win le gère trèèèèèèèès mal....