Ver Mensaje Individual
  #2  
Antiguo 06-08-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A ver si un procedimiento tal que así puede apañarte:

Código Delphi [-]
// Este es un procedimiento adaptado de un truco que puede
// hallarse en TrucoMania (http://www.q3.nu/) y lo utilizamos
// cuando queremos ejecutar un programa, con la particularidad
// de que, si se precisa, podemos hacer que nuestro programa
// espere a que el que ejecutamos termine su trabajo.
//
procedure EjecutarPrograma(rutaPrograma,
  parametros: string; esperar: boolean);
var
  salida: DWord;
  punteroInfo: PShellExecuteInfo;
  infoEjecucion: TShellExecuteInfo;
begin
  with infoEjecucion do
  begin
    cbSize := SizeOf(infoEjecucion);
    fMask := SEE_MASK_NOCLOSEPROCESS;
    wnd := GetActiveWindow;
    lpVerb := nil;
    lpFile := PChar(rutaPrograma);
    lpParameters := Pchar(parametros + #0);
    lpDirectory := nil;
    nShow := SW_NORMAL;
    hInstApp := 0;
  end;
  punteroInfo:= @infoEjecucion;
  ShellExecuteEx(punteroInfo);
  if esperar then
    repeat
      salida := WaitForSingleObject(
        infoEjecucion.hProcess, 500);
      Application.ProcessMessages;
    until (salida <> WAIT_TIMEOUT);
end;
De todos modos infórmate sobre "TShellExecuteInfo" buscando en estos Foros o en la propia ayuda de Delphi.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita