Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-01-2005
Avatar de !3d1@n
!3d1@n !3d1@n is offline
Miembro
 
Registrado: ene 2005
Ubicación: Ciudad Habana - Cuba
Posts: 46
Poder: 0
!3d1@n Va por buen camino
Question ¿Cuando termina de ejecutarse un .exe?

Hola ..
Estoy haciendo una aplicación en delphi6 en la cual tiene una opción que es la salva y restaura de la base de datos. Esta misma antes de salvarla la comparto con el Arj mediante este codigo.

Código:
WinExec(PChar(Camino+#0),SW_SHOWMINNOACTIVE);
donde Camino := 'C:\Control\ARJ.exe e -y A:\SBDCont.ARJ C:\Control';)
Pero he aca mi pregunta : ¿ Cómo saber cuando termina de ejecutarse el mismo ?

Muy Agredecido ...
__________________
Saludos ... JLedian.
Responder Con Cita
  #2  
Antiguo 07-01-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues que yo sepa con WinExec, no hay manera de saber cuando termina, porque según he experimentado inicia un hilo y devuelve el control al programa, con lo cual podemos pensar que ha terminado pero sigue en el hilo iniciado hasta que termina.

Un truco sucio, pero que resulta, sería crear un fichero bat, con las instrucciones pertinentes, pero la primera sería crear un fichero temporal, la segunda hacer la copia de seguridad y la tercer eliminar el fichero temporal y así nosotros desde Delphi esperaríamos hasta que el fichero temporal se eliminara.

Puede quedar algo como esto.
Código:
dir *.txt >espera
C:\Control\ARJ.exe e -y A:\SBDCont.ARJ C:\Control
del espera
Entonces desde WinExec llamaríamos a este Bat y no directamente a ARj.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 07-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Este procedimiento ejecuta la aplicación que le indiques y no regresa el control a tu aplicación sino hasta que la otra termine:

Código Delphi [-]
procedure ExecuteProcessAndWait(ProcessName: String);
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;

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

  if CreateProcess(PChar(ProcessName), nil, nil, nil, false, 0, nil, nil, StartInfo, ProcInfo) then
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end;

// Saludos
Responder Con Cita
  #4  
Antiguo 07-01-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Estaba buscando esa función pero veo que ya ha dado la respuesta Román.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 10-01-2005
Avatar de !3d1@n
!3d1@n !3d1@n is offline
Miembro
 
Registrado: ene 2005
Ubicación: Ciudad Habana - Cuba
Posts: 46
Poder: 0
!3d1@n Va por buen camino
Thumbs up Grasias

Muchas grasias a ambos, despues de probralas les comentos ...
__________________
Saludos ... JLedian.
Responder Con Cita
  #6  
Antiguo 11-01-2005
Avatar de !3d1@n
!3d1@n !3d1@n is offline
Miembro
 
Registrado: ene 2005
Ubicación: Ciudad Habana - Cuba
Posts: 46
Poder: 0
!3d1@n Va por buen camino
Arrow Comentario (Importante)

Hola a todas las personas de este foro
Les cuento que probe el procedimiento de Roman y me ha sido muy útil, solo que no se si se podría agregar a el procedimiento, que la aplicación se ejecutase minimizada. Me fuera mucho más útil aun.

Mil grasias a todos de antemano, y en especial a Roman.
__________________
Saludos ... JLedian.
Responder Con Cita
  #7  
Antiguo 12-01-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
En trucomania, el truco 285 es justo lo que buscas.

Saludos
Responder Con Cita
  #8  
Antiguo 12-01-2005
Avatar de !3d1@n
!3d1@n !3d1@n is offline
Miembro
 
Registrado: ene 2005
Ubicación: Ciudad Habana - Cuba
Posts: 46
Poder: 0
!3d1@n Va por buen camino
Thumbs down No me sirvió el truco [285] del Trucomanía

Hola Lepe :

Probe el truco [285] del Trucomanía como me dices pero me da en esta linea el sgte error:
Código:
 wnd:=Handle; 
[Error] Unit1.pas(43): Undeclared identifier: 'Handle'
Al ponerlo como comentario:
Código:
//wnd:=Handle;
Se ejecuta sin problema solo que llego al la misma incognita de al principio del hilo (inicia un hilo y devuelve el control al programa).
Por favor si poder soluccionarmelo ...

De todas formas muchas gracias.
__________________
Saludos ... JLedian.
Responder Con Cita
  #9  
Antiguo 13-01-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Handle es el identificador de ventana al que ha de informar, en este caso Form1.Handle.

En algunos casos, cuando lo llamo desde una unidad aparte, suelo llamarlo con el parámetro application.Handle

Yo tambien lo he usado para copias de seguridad de esta forma:

Código Delphi [-]
  Err := RunAndWait(Application.Handle,
    GL.ExePathWithSlash + 'BDBackup.exe',
    '/auto restore ' );

  if Err > 32 then
  begin
    //    mensajeinsert(False, 2,'Base de datos restaurada con éxito, reinicie el programa');
    conectaalared
  end
  else
  begin
    Application.MessageBox(
      'Error interno del Sistema Operativo, Por favor, reinicie Windows',
      CONST_AVISO, MB_ICONINFORMATION + MB_OK);

    LogWrite('Código de error del sistema operativo en proc: dtm.RestoreBackup ' +
      IntToStr(Err));

Saludos
Responder Con Cita
  #10  
Antiguo 14-01-2005
Avatar de !3d1@n
!3d1@n !3d1@n is offline
Miembro
 
Registrado: ene 2005
Ubicación: Ciudad Habana - Cuba
Posts: 46
Poder: 0
!3d1@n Va por buen camino
Thumbs up Ok

Hola Lepe :
Lo probaré, como me dices con el :
Código:
Wnd := Application.handle;
Por cierto ¿Cual es la etiqueta que usas para poner los codigos delphi en el foro ?
__________________
Saludos ... JLedian.
Responder Con Cita
  #11  
Antiguo 14-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Vaya, vaya! ¡Qué bonito! Yendo a trucomanía cuando en casa tenemos la solución.

Al procedimiento original que te puse agrega las líneas:

Código Delphi [-]
StartInfo.dwFlags := STARTF_USESHOWWINDOW;
StartInfo.wShowWindow := SW_MINIMIZE;

después de

StartInfo.cb := SizeOf(StartInfo);

Con esto la aplicación que ejecutes se iniciará minimizada.

// Saludos
Responder Con Cita
  #12  
Antiguo 19-01-2005
Avatar de !3d1@n
!3d1@n !3d1@n is offline
Miembro
 
Registrado: ene 2005
Ubicación: Ciudad Habana - Cuba
Posts: 46
Poder: 0
!3d1@n Va por buen camino
Talking !!! Ahora Sip.

Gracias Roman ..
Ahora si ... Todo marcha bien . Gracias una vez mas.
__________________
Saludos ... JLedian.

Última edición por !3d1@n fecha: 19-01-2005 a las 15:49:18. Razón: corregir ortografía
Responder Con Cita
  #13  
Antiguo 21-01-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
me he retrasado un poco... pero en fins:

[ delphi ]

codigo fuente aqui

[ /delphi ]

(sin los espacios dentro de los corchetes)

Saludos.
Responder Con Cita
  #14  
Antiguo 24-01-2005
Avatar de !3d1@n
!3d1@n !3d1@n is offline
Miembro
 
Registrado: ene 2005
Ubicación: Ciudad Habana - Cuba
Posts: 46
Poder: 0
!3d1@n Va por buen camino
Thumbs up ok

Código Delphi [-]
 for i := 1 to 10 do ShowMessage('Gracias');
__________________
Saludos ... JLedian.

Última edición por !3d1@n fecha: 24-01-2005 a las 14:14:07. Razón: Corregir ortografía
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:05:44.


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
Copyright 1996-2007 Club Delphi