Delphi - Ejecutar otra aplicación.

 
Vista:

Ejecutar otra aplicación.

Publicado por Juan (21 intervenciones) el 29/08/2001 00:30:58
Hola, tengo un pequeño problema al ejecutar otra aplicación (por ejemplo Word), pues necesito que mi programa espera hasta que se termine de cargar ésta y siga ejecutándose, las opciones que he probado me permiten detener mi programa mientras se está ejecutando esta aplicación. Lo intenté con una pausa, pero no funciona.
¿Conocen alguna forma para lograr esto?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ejecutar otra aplicación.

Publicado por beosman (163 intervenciones) el 29/08/2001 01:22:19
Añade 'ShellApi' en el uses de tu form

procedure TForm1.Button1Click(Sender: TObject);

procedure RunAndWaitShell(Ejecutable,
Argumentos:string
;Visibilidad:integer);
var
Info:TShellExecuteInfo;
pInfo:PShellExecuteInfo;
exitCode:DWord;
begin
{Puntero a Info}
{Pointer to Info}
pInfo:=@Info;
{Rellenamos Info}
{Fill info}
with Info do
begin
cbSize:=SizeOf(Info);
fMask:=SEE_MASK_NOCLOSEPROCESS;
wnd:=Handle;
lpVerb:=nil;
lpFile:=PChar(Ejecutable);
{Parametros al ejecutable}
{Executable parameters}
lpParameters:=Pchar(Argumentos+#0);
lpDirectory:=nil;
nShow:=Visibilidad;
hInstApp:=0;
end;
{Ejecutamos}
{Execute}
ShellExecuteEx(pInfo);

{Esperamos que termine}
{Wait to finish}
repeat
exitCode := WaitForSingleObject(Info.hProcess,500);
Application.ProcessMessages;
until (exitCode <> WAIT_TIMEOUT);
end;

begin
RunAndWaitShell('c:\windows\notepad.exe','c:\autoexec.bat',Sw_ShowNormal);
end;

Si llamamos a un ejecutable, este se ejecutará.
Si llamamos a un fichero no ejecutable, la función ejecutará su aplicación asociada.
Por ejemplo, abrir un fichero HTML con el browser por defecto del sistema:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar otra aplicación.

Publicado por Juan (21 intervenciones) el 31/08/2001 19:35:21
Gracias por tu respuesta. La función que propones detiene la ejecución de mi programa mientras el la aplicación esta corriendo; pero lo que necesito es que mi programa se detenga mientras se carga la segunca aplicación, y una vez que ya esté lista, continuar con su ejecución. Probé con timers y con la función sleep, para generar una pausa, pero no funciona, tal vez un thread.

Saludos
Juan
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar