Ver Mensaje Individual
  #2  
Antiguo 18-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Debes usar la función WaitForSingleObject. El problema aquí es que dicha función requiere como parámetro el identificador del proceso que ejecutas y éste no te lo devuelve la función WinExec así que debes ejecutarlo por otrs medios. La siguiente función debe servirte:

Código Delphi [-]
function ExecuteProcess(ProcessName: String): Cardinal;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;

begin
  Result := 0;

  FillChar(StartInfo, SizeOf(StartInfo), 0);
  StartInfo.cb := SizeOf(StartInfo);

  if CreateProcess(
    PChar(ProcessName), nil, nil, nil, false, 0,
    nil, nil, StartInfo, ProcInfo)
  then
    Result := ProcInfo.hProcess;
end;

Un ejemplo de uso:

Código Delphi [-]
var
  Process: Cardinal;

begin
  Application.Minimize;

  Process := ExecuteProcess('c:\windows\notepad.exe');
  if Process <> 0 then
    WaitForSingleObject(Process, INFINITE);

  Application.Restore;
end;

La aplicación no se restaurará hasta que se cierre el bloc de notas.

// Saludos

Última edición por roman fecha: 18-08-2004 a las 16:29:33.
Responder Con Cita