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:
note, l'affichage dans la console se fait en unicode, et je sais que win le gère trèèèèèèèès mal....
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;
Partager