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 24-04-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.307
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
A ver si te levanta algún error.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #2  
Antiguo 24-04-2015
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
Cerrar aplicacion y a la vez executar otra

ok, voy a probar.
Responder Con Cita
  #3  
Antiguo 24-04-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola lgarcia.

Si entendí bien, deseas copiar otra version de la aplicación llamando desde esta misma a un actualizador que sobreescribirá una nueva versión de la misma.

El problema es, que mientras la aplicación se esté ejecutando, el s.o. no permitirá que sobreescribas su archivo ejecutable. Y por otro lado, no veo manera que la aplicación ejecute al actualizador cuando no se está ejecutando (ya esta cerrada).

Yo me refería a que hicieras algo parecido a este ejemplo,

Aplicación:
Código Delphi [-]
...
implementation

uses ShellApi;

function NecesitaActualizar(): Boolean;
begin
  // verificar si necesita actualizar
  Result:= True;
end;

procedure TForm1.btnActualizarClick(Sender: TObject);
begin
  if NecesitaActualizar() then
  begin
    // Cerrar y/o liberar lo necesario
    ShellExecute(Handle,
                 'open',
                 'Actualizador.exe',
                 nil,
                 nil,
                 SW_SHOWNORMAL);
  end;
end;
...

Actualizador:
Código Delphi [-]
...
implementation 

uses tlhelp32, ShellApi;

procedure CloseApplication(const ExeFileName: string);
var
  Entry: PROCESSENTRY32;
  hSnapShot, hProcess: THandle;
begin
  hSnapShot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  Entry.dwSize:= SizeOf(PROCESSENTRY32);
  if Process32First(hSnapShot, Entry) then
    while Process32Next(hSnapShot, Entry) do
      if Entry.szExeFile = ExeFileName then
      begin
        hProcess := OpenProcess(SYNCHRONIZE + PROCESS_TERMINATE,
                                False,
                                Entry.th32ProcessID);
        if hProcess <> 0 then
          TerminateProcess(hProcess, 0);
        CloseHandle(hProcess);
      end;
end;

procedure Actualizar;
begin
  // aquí iría el proceso de actualización
  Sleep(4000); 
  ShowMessage('Actualización terminada');
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  CloseApplication('Aplicacion.exe');
  Actualizar;
  ShellExecute(Handle,
               'open',
               'Aplicacion.exe',
               nil,
               nil,
               SW_SHOWNORMAL);
  Close;
end;
...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-04-2015 a las 19:54:15. Razón: agregar comentario
Responder Con Cita
  #4  
Antiguo 24-04-2015
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
Cerrar aplicacion y a la vez executar otra

Todo quedo Estelar con la última contribución de Ecfisa.

Muchas gracias a todos y saludos.

Saludos
Luis Garcia
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cerrar otra aplicación con ventana invisible Lord Delfos API de Windows 7 23-04-2008 18:33:14
Activar una ventana al cerrar otra David OOP 3 17-09-2007 21:15:54
¿Cómo cerrar otra aplicación desde la mía? Alcolea Varios 1 22-03-2007 03:02:35
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 22:44:51
Cerrar una ventana desde otra Aura OOP 9 16-05-2005 18:20:49


La franja horaria es GMT +2. Ahora son las 16:42:35.


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