Dérivation d'affichage d'une appli console
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:
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....