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 :

Date dernier Arrêt du PC


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Par défaut Date dernier Arrêt du PC
    Bonjour,

    je recherche un moyen de connaitre la date du dernier arrêt du PC.

    Cette information me servira a provoquer un reboot automatique du PC si celui-ci n'a pas été arreté depuis un certain temps afin de permettre de faire des mises à jour (windows, antivirus) qui ne s'effectue qu'à l'arrêt ou au démarrage du PC.

    Je souhaite l'intégrer dans mon programme C# afin de controler le moment ou je fais ça (dans une phase de mon programme qui le permet).

    Quelqu'un a une idée ?

    Merci

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    utilise ton propre programme pour logué les arret de la machine ;-)

    il existe certainement un evenement système qui t'averti du shutdown ...?

    Suivant l'utilisation de ton programme (ex. service toujours en marche) tu peux utiliser aussi la fermeture de ce dernier...

    Il y a certaimenet d autre methodes...

  3. #3
    Membre confirmé Avatar de Couz02
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 232
    Par défaut
    Ce que tu peux faire c'est récupérer le temps écoulé depuis le démarrage du pc et le comparrer à une valeur. Si c'est suppérieur à la valeur : reboot.

  4. #4
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    Citation Envoyé par Couz02 Voir le message
    Ce que tu peux faire c'est récupérer le temps écoulé depuis le démarrage du pc et le comparrer à une valeur. Si c'est suppérieur à la valeur : reboot.
    tres bien -> pas besoin de sauver des data entre deux reboot

  5. #5
    Membre confirmé Avatar de Couz02
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 232
    Par défaut
    Non pas de data, juste un if ou un while, le mieu serai un while avec un thread je pense.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Par défaut
    Récuperer la valeur de démarrage du PC me conviendrait.

    Mais comment avoir cette info système sachant que mon soft ne démarre pas obligatoirement dès le démarrage du PC ou peut être arrêter par l'opérateur lorsqu'il ne l'utilise pas.

    Si je pouvais récuperer cette info ou celle du dernier arrêt par une commande système sans faire une glutte du style (lancer un batch au démarrage du PC pour enregistrer cette info), cela serait super !!

    Merci pour vos remarques

  7. #7
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par défaut
    je sais qu il une variable qui donne le temps ecoulé depuis le demarrage.

    pense a rechercher

  8. #8
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    essaye avec wmi. tu as pas d'info systeme.

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Par défaut
    Citation Envoyé par ramoud Voir le message
    Mais comment avoir cette info système sachant que mon soft ne démarre pas obligatoirement dès le démarrage du PC ou peut être arrêter par l'opérateur lorsqu'il ne l'utilise pas.
    Tu peux peut être essayer de te baser sur le System Idle Process ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TimeSpan t = System.Diagnostics.Process.GetProcessById(0).TotalProcessorTime

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Par défaut
    La solution de Keihilin me plaisais bien mais cela ne fonctionne pas.

    On a pas le droit de faire un TotalProcessorTime sur l'ID 0.

    Du coup je me suis fait une petite boucle pour voir si un autre process pouvait me donner le TotalProcessorTime correspondant au demarrage du PC,

    mais cela ne me donne pas un résultat satisfaisant (bizarre).

    Voici mon code :

    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
     
    // Get all processes running on the local computer.
    Process[] localAll = Process.GetProcesses();
     
    TimeSpan t1=new TimeSpan(0);
    Process p1;
    foreach (Process p in localAll)
    {
           if (p.Id != 0)
           {
                 TimeSpan t = p.TotalProcessorTime;
                  if (t > t1)
                  {
                        p1 = p;
                        t1 = t;
                   }
            }
     }
    Si quelqu'un a une idée de ce type là je suis preneur.

    Je regarde les autres solutions évoquées...

    Merci

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 54
    Par défaut
    Le dernier post de ZaAn m'a mis sur la voie...

    J'ai trouvé une solution pour avoir le temps depuis le démarrage du PC en milliseconde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int result = Environment.TickCount & Int32.MaxValue;
    Comme le résultat est un int, Int32.MaxValue; permet de passer de 24 jours à 49 jours (ce qui me suffit amplement).

    Merci pour votre aide.

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

Discussions similaires

  1. Date derniere mise à jour - apt
    Par byloute dans le forum Debian
    Réponses: 6
    Dernier message: 09/09/2021, 12h10
  2. enregistrer l'heure du dernier arrêt
    Par warning dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 22/10/2007, 12h35
  3. Date dernier accès à un fichier
    Par cledesol dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/05/2007, 13h40
  4. Selection enregistrements postérieurs à date dernier relevé
    Par Brice_68 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 21/03/2007, 16h52
  5. date derniere connexion
    Par zizou771 dans le forum Oracle
    Réponses: 9
    Dernier message: 04/07/2006, 16h14

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