[Func] _upTime() : Infos sur l'heure de démarrage du PC
Posté : lun. 30 juil. 2012 16:41
par jguinch
Bonjour.
Voici une petite fonction que je viens de créer (je n'ai pas trouvé d'équivalent) qui permet d'obtenir des informations sur la date et l'heure du démarrage de Windows.
Permet d'obtenir :
- la date du démarrage
- le temps écoulé depuis le démarrage (en différents formats)
La fonction et un exemple ici :
Voici une petite fonction que je viens de créer (je n'ai pas trouvé d'équivalent) qui permet d'obtenir des informations sur la date et l'heure du démarrage de Windows.
Permet d'obtenir :
- la date du démarrage
- le temps écoulé depuis le démarrage (en différents formats)
La fonction et un exemple ici :
► Afficher le texte
Code : Tout sélectionner
#include <Date.au3>
; Exemple 1, on récupère juste la date de démarrage de Windows
$text = "Windows a démarré le " & _upTime()
MsgBox (0, "_uptime(0)", $text )
; Exemple 2, on récupère la date de démarrage de Windows et le temps écoulé depuis
$upTimeInfo = _upTime(1)
$fromTxt = StringRegExpReplace($upTimeInfo[8], "(\d*) (\d{2}):(\d{2}):(\d{2})", "$1 jours(s), $2 heures, $3 minutes et $4 secondes")
$text = "Windows a démarré le " & $upTimeInfo[0] & @CR & _
" - depuis " & $fromTxt & @CR & _
" - soit : " & $upTimeInfo[1] & " année(s)" & @CR & _
" - soit : " & $upTimeInfo[2] & " mois" & @CR & _
" - soit : " & $upTimeInfo[3] & " jour(s)" & @CR & _
" - soit : " & $upTimeInfo[4] & " semaine(s)" & @CR & _
" - soit : " & $upTimeInfo[5] & " heure(s)" & @CR & _
" - soit : " & $upTimeInfo[6] & " minute(s)" & @CR & _
" - soit : " & $upTimeInfo[7] & " secondes"
MsgBox(0, "_uptime(1)", $text )
; ==== _upTime() ============================================================================================
; Description : Returns informations about Windows last boot time
; Syntax : _upTime( [$extend] )
; Parameters : $extend = 0 (default) or 1
; Return : $extend = 0
; Returns a string with the Windows last boot time using YYYY/MM/DD HH:MM:SS format
; $extend = 1
; Returns an array containing the elapsed time (days, hours, minutes and seconds)
; from Windows last boot time :
; $array[0] Windows last boot time
; $array[1] total of elapsed time from Windows last boot time (in Years)
; $array[2] total of elapsed time from Windows last boot time (in Months)
; $array[3] total of elapsed time from Windows last boot time (in Days)
; $array[4] total of elapsed time from Windows last boot time (in Weeks)
; $array[5] total of elapsed time from Windows last boot time (in Hours)
; $array[6] total of elapsed time from Windows last boot time (in Minutes)
; $array[7] total of elapsed time from Windows last boot time (in Seconds)
; $array[8] elapsed time from Windows last boot time using DD HH:MM:SS format
; Returns 0 if the function fails to get information
; Required : <Date.au3>
; ===========================================================================================================
Func _upTime($ext = 0)
Local $aReturn[9]
; WMI Method (proper method)
Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
If IsObj($objWMIService) Then
Local $colItems = $objWMIService.ExecQuery("Select * From Win32_OperatingSystem", "WQL", 0x10 + 0x20)
If IsObj($colItems) Then
For $objItem In $colItems
$aReturn[0] = StringRegExpReplace($objItem.LastBootUpTime, "\A(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).*", "$1/$2/$3 $4:$5:$6")
Next
EndIf
EndIf
; Returns 0 if each method fails
If $aReturn[0] == "" Then Return 0
$now = _NowCalc()
; Calculates the difference of time since the last starup
$aReturn[1] = _DateDiff( 'Y' , $aReturn[0], $now ) ; Difference in years
$aReturn[2] = _DateDiff( 'M' , $aReturn[0], $now ) ; Difference in months
$aReturn[3] = _DateDiff( 'D' , $aReturn[0], $now ) ; Difference in days
$aReturn[4] = _DateDiff( 'w' , $aReturn[0], $now ) ; Difference in weeks
$aReturn[5] = _DateDiff( 'h' , $aReturn[0], $now ) ; Difference in hours
$aReturn[6] = _DateDiff( 'n' , $aReturn[0], $now ) ; Difference in minutes
$aReturn[7] = _DateDiff( 's' , $aReturn[0], $now ) ; Difference in secondes
$d = Int( $aReturn[7] / 3600 / 24 )
$secLeft = $aReturn[7] - ( $d * 3600 * 24 )
$h = Int ($secLeft / 3600)
$secLeft = $secLeft - ( $h * 3600 )
$m = Int ( $secLeft / 60 )
$s = $secLeft - ( $m * 60 )
If $h < 10 Then $h = "0" & $h
If $m < 10 Then $m = "0" & $m
If $s < 10 Then $s = "0" & $s
$aReturn[8] = $d & " " & $h & ":" & $m & ":" & $s
If $ext = 0 Then
Return $aReturn[0]
ElseIf $ext = 1 Then
Return $aReturn
EndIf
Return 0
EndFunc ; ---> _PowerOnComputer()