[R] Lastbootuptime

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

[R] Lastbootuptime

#1

Message par fred39 »

Bonjour, je suis en train de faire mon premier script autoit,
j'aurais besoin d'une fonction me calculant depuis combien de temps ma station est allumée.
Equivalent à lastbootuptime.
merci d'avance
Modifié en dernier par Tlem le mer. 11 juin 2008 17:47, modifié 1 fois.
Raison : Ajout de la balise [..] dans le titre
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: lastbootuptime

#2

Message par jbnh »

On doit appeller la ddl: kernel32.dll

Code : Tout sélectionner

#Include <Date.au3>

$aTSB = DllCall ("kernel32.dll", "long", "GetTickCount")
$ticksSinceBoot = $aTSB[0]

dim $iHours, $iMins, $iSecs
_TicksToTime ( $ticksSinceBoot, $iHours, $iMins, $iSecs )

$iDays = int($iHours / 24)
$iHours = $iHours - ($iDays * 24)

msgbox(0,"System Uptime","Days: "&$iDays& ", Hours: "&$iHours &", Minutes: "&$iMins & ", Seconds: "&$iSecs )
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

Re: lastbootuptime

#3

Message par fred39 »

Super
Merci JBNH
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: lastbootuptime

#4

Message par Tlem »

Voici la source du code : http://www.autoitscript.com/forum/index ... t&p=222031

Sinon, il y a aussi cette possibilité : http://www.autoitscript.com/forum/index ... t&p=421611



PS : Merci de ne pas oublier la balise dans le titre (Lire les règles).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

Re: [R] Lastbootuptime

#5

Message par fred39 »

Bonsoir,
en fait j'ai un petit pb avec ce code.

Code : Tout sélectionner

#Include <Date.au3>

$aTSB = DllCall ("kernel32.dll", "long", "GetTickCount")
$ticksSinceBoot = ($aTSB[0]/1000)
msgbox(0,"System Uptime", $ticksSinceBoot )

dim $iHours, $iMins, $iSecs
_TicksToTime ( $ticksSinceBoot, $iHours, $iMins, $iSecs )
msgbox(0,"System Uptime", "Hours: "&$iHours &", Minutes: "&$iMins & ", Seconds: "&$iSecs )
$iDays = int($iHours / 24)
$iHours = $iHours - ($iDays * 24)

msgbox(0,"System Uptime","Days: "&$iDays& ", Hours: "&$iHours &", Minutes: "&$iMins & ", Seconds: "&$iSecs )
Quand la machine est allumée depuis + d'un mois
la variable $ticksSinceBoot a une valeur négative.
Donc tous les calculs qui suivent sont eronés...
Une piste ?
Merci.
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

Re: [..] Lastbootuptime

#6

Message par fred39 »

Bonjour, tjs le même pb cité dans dans mon poste précédent.
J'ai installé ça sur plusieurs serveurs.
ET apparemment, quand le serveur est allumé depuis plus d'un mois, la valeur affectée à la variable $ticksSinceBoot est négative.
J'ai essayé en changeant dans la ligne
$aTSB = DllCall ("kernel32.dll", "long", "GetTickCount") long par d'autre types.
en récupérant la valeur absolue abs() rien n'y fait.
Avez vous une piste?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Lastbootuptime

#7

Message par Tlem »

Et celui-ci :

Code : Tout sélectionner

; Script basé sur le code original de bluebearr.
; http://www.autoitscript.com/forum/index.php?showtopic=31010&view=findpost&p=222019

#include <date.au3>
Dim $colItems, $Output

$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", 0x10 + 0x20)

If IsObj($colItems) Then
    For $objItem In $colItems
        $Output = WMIDateStringToDate($objItem.LastBootUpTime)
    Next
EndIf

Func WMIDateStringToDate($dtmDate)
    Return (StringLeft($dtmDate, 4) & "/" & _
            StringMid($dtmDate, 5, 2) & "/" & StringMid($dtmDate, 7, 2) _
             & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
EndFunc   ;==>WMIDateStringToDate

$uptime = _DateDiff('s', $Output, _NowCalc())
$daysUp = Int($uptime / (60 * 60 * 24))
$remainder = Mod($uptime, 60 * 60 * 24)
$hoursUp = Int($remainder / (60 * 60))
$remainder = Mod($remainder, 60 * 60)
$minUp = Int($remainder / 60)
$secUp = Mod($remainder, 60)
MsgBox(0, "Uptime", "Votre Uptime est de :" & @LF & "  " & $daysUp & " Jours, " _
         & $hoursUp & " Heures, " & $minUp & " Minutes, " & $secUp & " Secondes.")
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
fred39
Niveau 4
Niveau 4
Messages : 64
Enregistré le : lun. 05 mai 2008 10:03
Status : Hors ligne

Re: [R] Lastbootuptime

#8

Message par fred39 »

Le dernier script proposé par tlem,
renvoie la bonne valeur d'uptime.
Merci pour votre aide :D
Répondre