Calcule du temps total d'utilisation

Résolu
aldrac Messages postés 44 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 22 janvier 2011 - 5 août 2008 à 19:42
aldrac Messages postés 44 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 22 janvier 2011 - 6 août 2008 à 17:16
Bonjour a tous, j'ai crée une petite application qui se lance au démarrage de
windows,et je chercher un moyen de calculer le temps total d'utilisation,je m'explique:
dés que le pc fonctionne mon programme compte les secondes, minutes et heures, les stocks
dans des fichiers pour pouvoir au ré allumage du pc retrouver les valeurs (heures,min,sec)
Ainsi mon chrono reprend ou il s'etai arrêter!
Je sais cela doit vous sembler un peu poussif!! Mais je débute et je fais ça en amateur,j' ai chercher
le moyen pour que mon prog détecte lorsque le pc va s'éteindre et ainsi écrire juste a ce moment la,
dans un fichier,mais j'ai pas trouver!!
Voici l'extrais de mon code qui concerne cette fonction,
dite moi ce que vous en penser,n'hésiter pas!!

Imports System.IO 'pour pouvoir lire et écrire de fichiers
Public Class Form1
    Dim h As Integer 'les heures
    Dim m As Integer 'les minutes
    Dim s As Integer 'les secondes
    Dim t As String 'affichage du temps

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'on regarde si on peut reprendre les données d'un précedent timer
        If File.Exists("c:\a\heures.txt") Then
            Call reprise()
        End If

        'le label affiche les variables (précedente ou non)
        Label1.Text = "" & h & " : " & m & " : " & s & ""

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        'a chaque tick on incrémente s de 1
        s = s + 1

        'on defini les unitées de temps:        If s 60 Then : s 0
            m = m + 1
        End If
        If m 60 Then : m 0
            h = h + 1
        End If

        'on donne a t les valeurs des variables h,m,s
        t = "" & h & " : " & m & " : " & s & ""
        Label1.Text = (t) 'affiche t

        ' a chaque tick on écrit les valeurs de h,m,s dans des fichiers .txt afin de les lires
        'lors de la reprise
        Dim SW1 As StreamWriter = File.AppendText("c:\a\heures.txt") ' crée ou si existe ajoute
        SW1.WriteLine(h)
        SW1.Close()

        Dim SW2 As StreamWriter = File.AppendText("c:\a\minutes.txt") ' crée ou si existe ajoute
        SW2.WriteLine(m)
        SW2.Close()

        Dim SW3 As StreamWriter = File.AppendText("c:\a\secondes.txt") ' crée ou si existe ajoute
        SW3.WriteLine(s)
        SW3.Close()

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Interval = 1000 'timer de 1 seconde
        Timer1.Start()

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        End
    End Sub

  

    Private Sub reprise()

        'on transforme le fichier heures.txt en tableau
        Dim th() As String = File.ReadAllLines("c:\a\heures.txt")
        Dim k As String
        Dim p As Integer

        'on cherche la derniere ligne du tableau
        k = th.Length - 1 ' -1 car les elements du tableau commence a l'indice 0,1,2...donc i serait or tableau
        p = CType((k), Integer)  ' f est la variable String, Integer est le type à obtenir
        h = th.GetValue(p) 'h prend la valeur de la derniere ligne du tableau

        'on transforme le fichier minutes.txt en tableau
        Dim tm() As String = File.ReadAllLines("c:\a\minutes.txt")
        Dim l As String
        Dim q As Integer

        'on cherche la derniere ligne du tableau
        l = tm.Length - 1 ' -1 car les elements du tableau commence a l'indice 0,1,2...donc i serait or tableau
        q = CType((l), Integer)  ' f est la variable String, Integer est le type à obtenir
        m = tm.GetValue(q) 'm prend la valeur de la derniere ligne du tableau

        'on transforme le fichier secondes.txt en tableau
        Dim ts() As String = File.ReadAllLines("c:\a\secondes.txt")
        Dim n As String
        Dim r As Integer

        'on cherche la derniere ligne du tableau
        n = ts.Length - 1 ' -1 car les elements du tableau commence a l'indice 0,1,2...donc i serait or tableau
        r = CType((n), Integer)  ' f est la variable String, Integer est le type à obtenir
        s = ts.GetValue(r) 's prend la valeur de la derniere ligne du tableau

        'apres avoir pris les précedentes valeures de h,m,s on efface les fichiers pour reécrir dans des neufs
        Call efface()
       

    End Sub

  
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Call reprise()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Timer1.Stop()
    End Sub

    Private Sub efface()

        'on efface les fichiers pour ne pas surcharger
        File.Delete("c:\a\heures.txt")
        File.Delete("c:\a\minutes.txt")
        File.Delete("c:\a\secondes.txt")

    End Sub
End Class

4 réponses

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
6 août 2008 à 00:57
Salut,
Il y a plus simple

1. Au lieu de créer un fichier, on peut utiliser un paramètre de l'application :
    - Menu Projet > Propriétés
    - Onglet Paramètres, tu ajoute un paramètre qui s'appel "ElapsedTime" de type Integer, porté utilisateur et de valeur 0

2. Au démarrage de l'application, on mémorise l'heure :
Private StartTime As Date
Private Sub Form1_Load(...) Handles MyBase.Load
    StartTime = Now
End Sub

3. A la fermeture de l'application, on sauvegarde le temps écoulé :
Private Sub Form1_FormClosing(...) Handles Me.FormClosing
    ' Temps écoulé durant la session :
    Dim Span As TimeSpan = Now - StartTime
    ' Ajouter au temps total :
    My.Settings.ElapsedTime += Span.Ticks
End Sub

4. Si tu veux connaitre/afficher le temps écoulé total :
    ' Temps total enregistré :
    Dim TotalTime As New TimeSpan(My.Settings.ElapsedTime)
    ' On ajoute le temps écoulé durant la session
    TotalTime.Add(Now - StartTime)

Comme tu peux le voir, on ne travail pas avec des heures, minutes et secondes, mais avec des ticks. Le tick est l'unité de base du temps, utilisé avec un TimeSpan il permet d'en extraire les heures, minutes et secondes ainsi que d'être aditionné/soustrait à une date.
3
aldrac Messages postés 44 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 22 janvier 2011 1
6 août 2008 à 07:08
je te remercie pour ta renonce je vais regarder tout ça!!
A++
3
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
6 août 2008 à 10:49
tu n'as pas besoin de savoir quand windows vas se fermer ,
windows envoie un message aux applications qui tournent et normalement ton prog aura le temps de sauver ses données

dans l'evenement  form_close sauve tes données  .|

bonjour chez vous!
< body>
3
aldrac Messages postés 44 Date d'inscription jeudi 5 janvier 2006 Statut Membre Dernière intervention 22 janvier 2011 1
6 août 2008 à 17:16
ok!! Tout simple!
Merci Gillardg.
3
Rejoignez-nous