Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ejecutar y vigilar varios programas a la vez (https://www.clubdelphi.com/foros/showthread.php?t=77268)

Anel Hernandez 09-01-2012 16:36:05

Ejecutar y vigilar varios programas a la vez
 
Hola,

necesito mandar a correr un programa varias veces con distintos parametros. pero necesito mandar a la vez la misma cantidad que numero de nucleos tenga el micro. Cuando termine uno, mandar otro y asi hasta terminar todos.

Es decir, si tengo 4 nucleos y debo mandar mi programa a ejecutar 31 veces, primero debo mandar a ejecutar 4 veces el programa. y cada vez que se cierre uno mandar otro manteniendo el numero de programas activo en 4. Cuando se acerque a 31 pues quedaran corriendo 3, 2 y 1 hasta que termine.

el numero de micros lo leo con la variable NumMicro.

hasta ahora lo hago de esta manera:
Código Delphi [-]
var
 i:integer;
 Info:TShellExecuteInfo;
 programa:string;
begin

 for i:=1 to CheckListBox1.items.count do begin
  if CheckListBox1.Checked[i-1] then begin
  
   with Info do begin
    cbSize := SizeOf(ShellExecuteInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := Handle;
    lpVerb := 'open';
    lpFile := PChar(DirT+programa);
    lpParameters := PChar(checklistbox1.items.Strings[i-1]);
    lpDirectory := PChar(ExtractFileDir(checklistbox1.items.Strings[i-1])+'\');
    nShow := SW_SHOW;
   end;
   ShellExecuteE@INFO);
   Repeat
    Application.ProcessMessages;
   until (WaitForSingleObject( Info.hProcess,500)<> WAIT_TIMEOUT);

No quisiera usar hilos. Quisiera modificar este algoritmo de forma que identifique cada proceso y los vigile.

Pudieran ayudarme
Gracias

Ñuño Martínez 11-01-2012 02:10:56

Ahora mismo no recuerdo: ¿Tiene definida, Delphi, la clase TProcess? En Free Pascal sí existe y permite controlar muy bien cuándo termina la ejecución del programa, e incluso comunicarse con él vía "pipes".

Anel Hernandez 17-01-2012 19:38:30

re
 
Hola,

El Tprocess no lo encuentro en Delphi,

pudiera hacerse lo ke kiero con WaitForMultipleObjects()?????

gracias

Ñuño Martínez 23-01-2012 12:53:18

Pues la verdad es que no lo sé. A mi se me han terminado las ideas


La franja horaria es GMT +2. Ahora son las 04:35:10.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi