Boot Zeit

  • Hallo an die alteingesessenen Autoit Coder

    hab an kleines Problemle, wo ihr mir bestimmt helfen könnt.
    ich will so an Kleines Progrämmle machen, des mir Zeit, Datum, System uptime und Boot-Time anzeigt.
    alles auser die Boot Zeit geht schon, das mit der Boot-zeit geht rein Theoretisch auch (muss gestehen habs mir wo abgekupfert)
    aber ich bekomms ned gebacken in mein skript mit ein zu baun.
    Alleine funktionierts, kann mir da vllt einer helfen.

    Spoiler anzeigen
    [autoit]

    ; Includes
    #include <Date.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #Include <Constants.au3>
    ; Declares
    Global $hour, $mins, $secs, $hour1, $mins1, $secs1, $hourb, $minsb, $secsb
    ;#################Programm#################
    ; GUI
    $Form1 = GUICreate("Uhrzeit", 515, 20, -1, 0, $WS_POPUP, $WS_EX_TOPMOST, $WS_EX_TOOLWINDOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Uhrzeit
    GUICtrlCreateLabel("Uhrzeit:", 5, 3, 40, 17)
    $Label1 = GUICtrlCreateLabel("", 45, 3, 59, 17)
    GUICtrlSetColor(-1, 0xFF0000)

    [/autoit] [autoit][/autoit] [autoit]

    ; Datum
    GUICtrlCreateLabel("Datum:", 120, 3, 38, 17)
    $Label2 = GUICtrlCreateLabel("", 158, 3, 57, 17)
    GUICtrlSetColor(-1, 0xFF0000)

    [/autoit] [autoit][/autoit] [autoit]

    ;System upTime
    GUICtrlCreateLabel("System upTime:", 250, 3, 150, 17)
    $Label3 = GUICtrlCreateLabel("", 330, 3, 58, 17)
    GUICtrlSetColor(-1, 0xFF0000)

    [/autoit] [autoit][/autoit] [autoit]

    ;Boot Time
    GUICtrlCreateLabel("Boot Time:", 410, 3, 150, 17)
    $Label4 = GUICtrlCreateLabel("", 465, 3, 58, 17)
    GUICtrlSetColor(-1, 0xFF0000)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _Update()
    AdlibEnable("_Update", 1000)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    Func _Update()
    GUICtrlSetData($Label1, StringFormat("%02i:%02i:%02i", @HOUR, @MIN, @SEC))
    GUICtrlSetData($Label2, @MDAY & "." & @MON & "." & @YEAR)
    _TicksToTime(_DateDiff('s', _NowCalc(), _DateAdd('d', 1, _NowCalcDate()) & " 00:00:00") * 1000, $hour1, $mins1, $secs1)
    GUICtrlSetData($Label3, StringFormat("%02i:%02i:%02i", $hour, $mins, $secs))
    _TicksToTime(TimerDiff(0), $hour, $mins, $secs)
    GUICtrlSetData($Label4, StringFormat("%02i:%02i:%02i", $hourb, $minsb, $secsb))

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc ;==>_Update

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;###################################################################################################
    $objWMIService = ObjGet('winmgmts:\\localhost\root\CIMV2')
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_OperatingSystem', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $Output = '' & _WMIDateStringToDate($objItem.LastBootUpTime)
    Next
    Else
    $Output = ''
    EndIf
    MsgBox("","",$Output)
    Func _WMIDateStringToDate($dtmDate)
    Return StringRegExpReplace($dtmDate, '(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).*', '$hourb:$minsb:$secsb')
    EndFunc ;==>_WMIDateStringToDate($dtmDate)

    [/autoit]

    Edit Oscar: Spoiler gesetzt.

    3 Mal editiert, zuletzt von Piccolo1986 (16. April 2009 um 10:25)

    • Offizieller Beitrag

    Ich hatte das mal gepostet. Speziell die _WMIDateStringToDate hatte ich nämlich so geändert. ;)
    Macht aber nichts. Dafür ist das Forum ja da.
    Hier mal Dein Script mit ein paar Änderungen:

    Spoiler anzeigen
    [autoit]


    ; Includes
    #include <Date.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <Constants.au3>
    ; Declares
    Global $hour, $mins, $secs, $hour1, $mins1, $secs1, $hourb, $minsb, $secsb
    Global $objWMIService = ObjGet('winmgmts:\\localhost\root\CIMV2')
    ;#################Programm#################
    ; GUI
    $Form1 = GUICreate("Uhrzeit", 580, 20, -1, 0, $WS_POPUP, $WS_EX_TOPMOST, $WS_EX_TOOLWINDOW)

    [/autoit] [autoit][/autoit] [autoit]

    ; Uhrzeit
    GUICtrlCreateLabel("Uhrzeit:", 5, 3, 40, 17)
    $Label1 = GUICtrlCreateLabel("", 45, 3, 59, 17)
    GUICtrlSetColor(-1, 0xFF0000)

    [/autoit] [autoit][/autoit] [autoit]

    ; Datum
    GUICtrlCreateLabel("Datum:", 120, 3, 38, 17)
    $Label2 = GUICtrlCreateLabel("", 158, 3, 57, 17)
    GUICtrlSetColor(-1, 0xFF0000)

    [/autoit] [autoit][/autoit] [autoit]

    ;System upTime
    GUICtrlCreateLabel("System upTime:", 250, 3, 150, 17)
    $Label3 = GUICtrlCreateLabel("", 330, 3, 58, 17)
    GUICtrlSetColor(-1, 0xFF0000)

    [/autoit] [autoit][/autoit] [autoit]

    ;Boot Time
    GUICtrlCreateLabel("Boot Time:", 410, 3, 150, 17)
    $Label4 = GUICtrlCreateLabel(_BootTime(), 465, 3, 110, 17)
    GUICtrlSetColor(-1, 0xFF0000)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _Update()
    AdlibEnable("_Update", 1000)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _Update()
    GUICtrlSetData($Label1, StringFormat("%02i:%02i:%02i", @HOUR, @MIN, @SEC))
    GUICtrlSetData($Label2, StringFormat("%02i.%02i.%02i", @MDAY, @MON, @YEAR))
    _TicksToTime(TimerDiff(0), $hour, $mins, $secs)
    GUICtrlSetData($Label3, StringFormat("%02i:%02i:%02i", $hour, $mins, $secs))
    EndFunc ;==>_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func _BootTime()
    Local $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_OperatingSystem', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $Output = _WMIDateStringToDate($objItem.LastBootUpTime)
    Next
    Else
    $Output = ''
    EndIf
    Return $Output
    EndFunc ;==>_BootTime

    [/autoit] [autoit][/autoit] [autoit]

    Func _WMIDateStringToDate($dtmDate)
    Return StringRegExpReplace($dtmDate, '(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).*', '$3.$2.$1 / $4:$5:$6')
    EndFunc ;==>_WMIDateStringToDate

    [/autoit]

    P.S.: Bitte benutze bei längeren Scripten zusätzlich die Spoiler-Tags. Hab's bei Dir mal hineineditiert.

  • mal wieder, dankeschön.
    Stimmt ja, das warst du, du hasts echt druff.
    Ich hab gedacht, dass ich alleine damit klar komme, aber des war mir doch etwas zu hoch, hab da net wirklich durchgepeilt, was da was macht.
    Aber wer weiß, vllt hab ichs au mal so druff wie du.
    Danke nochmal

  • Musste den Treat leider wieder öffnen.
    Ich raffs echt net, bis gestern funktionierte das Skript wunderbar.
    Aber seit heute gehts nemme, es startet aber es passiert nichts, und wenn ich dann im System Tray mit Rechtsklick exit machen möchte,
    hängt sich mein ganzer pc auf.
    Aaaaaaber, auf meim Notebook läuft das Skript noch.
    Woran zum Geier kann das liegen, weil andere Skripts Funktionieren auch noch, nur dieses eine macht auf einmal Faxxen.

  • Habe es so wie dus gepostet hast verwendet, als exe compiliert, hat alles wunderbar funktioniert.
    Und von heute auf morgen gings nemme.
    Au wenn ich jetzt das Skript verwende, so wie dus gepostet hast und ich es direkt aus deim Beitrag kopiere, es funktioniert einfach nicht mehr.
    Aber andere Skripte gehen noch, hab jetzt extra schon Autoit neu installiert, hat au nix gebracht.
    Wollte das Skript im Geschäft verwenden, da wir nun Kurzarbeit haben und man da sehr auf die Zeit achten muss.
    Aber bei mir und meim Kollegen geht es nicht, aber daheim aufm meim Notebook gehts.
    Kannst ja vllt nochmal bei dir probieren.
    Danke

    EDIT: Habe mal die au3 und die compilierte exe hochgeladen

  • Dann mach ich des mal neu drauf.
    Das koische ist ja, dass es schon Funktioniert hat.
    Und von heute auf morgen nemme.
    Ist ein Windows XP Rechner, von der Leistung her mindestens so gut wie mein Notebook.
    Ich kann mir da echt kein Reim drauf machen.