Redemmarer mon application automatiquement

Résolu
BernieNoel68 Messages postés 92 Date d'inscription vendredi 12 octobre 2007 Statut Membre Dernière intervention 20 novembre 2009 - 11 avril 2008 à 14:22
BernieNoel68 Messages postés 92 Date d'inscription vendredi 12 octobre 2007 Statut Membre Dernière intervention 20 novembre 2009 - 11 avril 2008 à 15:55
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

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
11 avril 2008 à 14:54
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;
 

3
BernieNoel68 Messages postés 92 Date d'inscription vendredi 12 octobre 2007 Statut Membre Dernière intervention 20 novembre 2009 1
11 avril 2008 à 15:55
Merci de ta reponse...
0
Rejoignez-nous