Redemmarer mon application automatiquement [Résolu]

Signaler
Messages postés
92
Date d'inscription
vendredi 12 octobre 2007
Statut
Membre
Dernière intervention
20 novembre 2009
-
Messages postés
92
Date d'inscription
vendredi 12 octobre 2007
Statut
Membre
Dernière intervention
20 novembre 2009
-
Bonjour a tous,

Je suis a la recherche d'une solution permettant à mon application de s'arreter et de se relancer automatiquement.
En gros j'ai une application qui dois tourner en permanance, mais je souhaiterais qu'elle s'arrete et se relance toute les 24H.

Pour l'arreter au moment voulu c'est pas un soucis. Par contre pour redemarrer je ne vois pas coment faire. Toutes les solutions que j'ai envisager sont pas très propres et ressemble plus a de la "magouille" qu'autre chose.

Je pensais à la fermeture de mon appli lancer un fichier bat qui la relance, mais comment faire pour que le fichier bat attende que l'appli soit fermée avant de la relancer? (mon appli n'autorise qu'une seule instance a la fois).

Avez vous déja été confronté à ce problème, et avez vous une solution?

Si jamais je ne suis pas très clair dans mes explications, je peux essayé d'approfondir.

Merci d'avance.

2 réponses

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
Application.exe
-> global / implementation :
  uses ShellApi;
  var

    TimeH : integer 96; {(24h * 60min)/15 96 quart d'heure / jours }
    AppPath : string;
  


-> MainForm.Create() :
  AppPath := IncludeThrailingBackslash(ExtractFilePath(ParamStr(0)));

-> timer (900000) {15 minutes):
  TimeH = TimeH - 1;
  if TimeH = 0 then
  begin
    ShellExecute(0, PChar(AppPath+'ReLaunch.exe'),
                    PChar(AppPath+' Application.exe'),
                    PChar(AppPath),
                    SW_SHOW);
    Close;
  end; 

Relaunch.exe (appli console) parametres : Relaunch.exe path programname
  uses ..., ShellApi;
  var
    i : integer;
    t : integer = 10;
  begin
    if ParamCount <> 2 then
    begin
      Writeln('Erreur de parametres...');
      ReadLn;
      Halt(0);
    end;

    Writeln('Redémarrage dans :');
    while t > 0 do
    begin
      Writeln(IntToStr(T)+' secondes');
      t := t - 1;
      Sleep(1000);
    end;
    Writeln('Redémarrage...');

    ShellExecute(0, PChar(ParamStr(1)+ParamStr(2)),

                    {parametres ou nil} nil,

                    PChar(ParamStr(1)),

                    SW_SHOW);

  end;
 

Messages postés
92
Date d'inscription
vendredi 12 octobre 2007
Statut
Membre
Dernière intervention
20 novembre 2009
1
Merci de ta reponse...