Page 1 sur 1
[R] Lastbootuptime
Posté : mer. 11 juin 2008 16:14
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
Re: lastbootuptime
Posté : mer. 11 juin 2008 16:42
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 )
Re: lastbootuptime
Posté : mer. 11 juin 2008 16:53
par fred39
Super
Merci JBNH
Re: lastbootuptime
Posté : mer. 11 juin 2008 17:46
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).
Re: [R] Lastbootuptime
Posté : mer. 18 juin 2008 21:31
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.
Re: [..] Lastbootuptime
Posté : ven. 20 juin 2008 10:40
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?
Re: [R] Lastbootuptime
Posté : ven. 20 juin 2008 23:21
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.")
Re: [R] Lastbootuptime
Posté : ven. 27 juin 2008 10:36
par fred39
Le dernier script proposé par tlem,
renvoie la bonne valeur d'uptime.
Merci pour votre aide
