IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[AutoKill] Fermeture automatique d'une application après un temps d'inactivité


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut [AutoKill] Fermeture automatique d'une application après un temps d'inactivité
    Bonjour à tous !

    J’ai une application qui se loge dans le systray (elle affiche des messages de temps en temps, l’utilisateur peut aussi aller dans le menu pour voir les derniers messages & co), mais cette application ne fait rien la plupart du temps (elle est juste lancée par d’autres logiciels). En bref, c'est une sorte d'Abobe updater (affiche des message automatiquement après récup sur serveur)


    On critique sa taille gourmande en mémoire (30 Mo…), difficile de faire mieux en .Net !


    Mon idée c’est de proposer une fermeture automatique après inactivité, comment dois je procéder ?

    Y a-t-il un truc magique qui fait ça ?
    Où faut que je me paluche un timer global à l’application que je relance aux endroits propices du code (affichage du message, le mec clic sur l’ouverture des menus…) ?

    Merci d’avance pour vos avis

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Je pense que tous les event passent par WndProc.
    Ainsi, tu pourrais faire comme ceci dans la Main Form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     using System.Diagnostics;
     
    private DateTime LastEventDateTime=DateTime.Now() ;
    private double Inactivite_maxi_en_minutes = ... ; // constante à définir 
     
    protected override void WndProc(ref Message m) 
    {
       base.WndProc(ref m);
       LastEventDateTime=DateTime.Now() ;
    }
     
    static void timer1_Tick(object sender, EventArgs e)
    {
       System.TimeSpan diff = DateTime.Now().Substract(LastEventDateTime);
       if (diff.TotalMinutes>Inactivite_maxi_en_minutes) MyCloseAppliFunction() ;
    }

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
            public Form1()
            {
                InitializeComponent();
                timer1.Interval = 5000;
                timer1.Start();
            }
     
            private DateTime LastEventDateTime = DateTime.Now;
            private int Inactivite_maxi_en_second = 10; // constante à définir 
     
            protected override void WndProc(ref Message m)
            {
                base.WndProc(ref m);
                LastEventDateTime = DateTime.Now;
            }
     
            private void timer1_Tick_1(object sender, EventArgs e)
            {
                System.TimeSpan diff = DateTime.Now.Subtract(LastEventDateTime);
                if (diff.TotalSeconds > Inactivite_maxi_en_second) Application.Exit();
            }
    Graffito, A première vu ca m'a l'air de tenir la route, merci chaleureusement !

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    ca m'a l'air de tenir la route
    Remplace toutefois diff.Seconds par diff.TotalSeconds

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/01/2012, 21h38
  2. Réponses: 5
    Dernier message: 04/07/2010, 07h13
  3. Fermeture automatique d'une Form
    Par byboleymar dans le forum Langage
    Réponses: 14
    Dernier message: 08/09/2006, 09h57
  4. Réponses: 5
    Dernier message: 11/05/2006, 22h39
  5. fermeture d'une application après un temp d'inactivité?
    Par sitdown dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 24/08/2005, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo