Ver Mensaje Individual
  #10  
Antiguo 22-04-2009
pjmedina pjmedina is offline
Miembro
 
Registrado: abr 2006
Posts: 84
Reputación: 19
pjmedina Va por buen camino
MAXIUM he utilizado tu código, le he hecho un par de arreglillos y va bien.

Paso el codigo por si alguien lo necesita.
Saludos y gracias por todo.

Código Delphi [-]
program Reconectar;
{$APPTYPE CONSOLE}
uses
  Windows,
  dateutils,
  SysUtils;
Var
  Ventana: HWND;
  Fini,Fact:TDateTime;
  napp,app:String;
  sg,tiempolimite:integer;
  Function CalculaTiempo(FechaIni: TDateTime; FechaFin: TDatetime):Integer;
  var
   sg:integer;
   ValorFecha: real;
  begin
    ValorFecha:=FechaFin-FechaIni;
    sg:=trunc(ValorFecha*24*60*60);
    CalculaTiempo:=sg;
  end;
Begin
  fini:=Now;
  napp:='Nombre de la aplicacion';
  app:='ejecutable.exe';
  tiempolimite:=30;//tiempo limite para la ejección del programa
   // verifica que la aplicación principal este cerrada
   Repeat
     Fact:=Now;
     sg:=CalculaTiempo(Fini,Fact);
     //sg contiene el numero de segundos transcurridos desde que se inicio la app.
     ventana:=FindWindow(nil, PChar(napp));
   Until((ventana<=0)or(sg>tiempolimite));
 
   //Si no se ha excedido el tiempo limite la vuelve a abrir.
   if sg<=tiempolimite then
      WinExec(PChar(app), SW_SHOWNORMAL);
End.

La llamada a este programa seria:
Código Delphi [-]
var
  ruta:string;
begin
  ruta:='Reconectar.exe';//Nombre de la aplicacion escrita anteriormente
  WinExec(PChar(ruta),SW_HIDE);
  close;//cerramos la aplicacion actual para volverla a abrir
end;

Última edición por pjmedina fecha: 22-04-2009 a las 13:32:44.
Responder Con Cita