GUI Zeit Programm läuft seit ddd | hh:mm:ss

  • Hallo das ist zurzeit mein Code könnte mir bitte jemand sagen wie ich es machen kann das bei laufzeit die zeit kommt wie lange er bereits läuft also es fängt an zu zählen sobald das prog startet


    Spoiler anzeigen
    [autoit]

    HotKeySet ("{ESC}", "_exit")
    HotKeySet ("{PAUSE}", "_pause")
    #include <GUIConstantsEx.au3>
    #Include <Timers.au3>
    #Include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <DateTimeConstants.au3>
    #include <WindowsConstants.au3>
    Opt ("TrayMenuMode",1)
    Local $nMsg
    Local $gui001 = GUICreate ("", 614, 20, 0, 0)
    GUISetBkColor (0x000000)
    GUISetState (@SW_SHOW, $gui001)
    $zeit0001 = TimerInit ()
    Local $tTimerID = _Timer_SetTimer($gui001, 1000, "_0001", -1)
    GUISetCursor (3, 3)
    Send ("{PAUSE}")
    Func _pause ()
    While True
    #cs
    normal Programm Befehl aber Befehl gelöscht
    #ce
    Sleep (1000)
    WEnd
    EndFunc
    Func _0001 ($hWnd, $Msg, $iIDTimer, $dwTime)
    GUICtrlCreateLabel ("Uhrzeit:", 4, 4, 40, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFF00)
    GUICtrlCreateLabel (@HOUR & ":" & @MIN & ":" & @SEC, 44, 4, 50, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFFFF)
    GUICtrlCreateLabel ("Datum:", 104, 4, 40, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFF00)
    GUICtrlCreateLabel (@MDAY & "." & @MON & "." & @YEAR, 144, 4, 60, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFFFF)
    GUICtrlCreateLabel ("Jahrestag:", 214, 4, 60, 13)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFF00)
    GUICtrlCreateLabel (@YDAY, 274, 4, 20, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFFFF)
    GUICtrlCreateLabel ("laufzeit:", 304, 4 , 160, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFF00)
    GUICtrlCreateLabel ("dd | hh:mm:ss", 464, 4, 150, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFFFF)
    EndFunc
    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von SchrotterCh (17. September 2009 um 11:10)

    • Offizieller Beitrag

    Hi,

    beu sowas ein.

    Spoiler anzeigen
    [autoit]

    ; Stoppuhr

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

    #include<Date.au3>
    Opt('MustDeclareVars', 1)
    HotKeySet('{esc}', '_end')
    HotKeySet('{Pause}', '_stop')

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

    Global $time = _NowTime()

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

    While 1
    ToolTip('Stoppuhr' & @CRLF & '============' & @CRLF & _counter(_NowCalcDate(), $time) & ' left', _
    @DesktopWidth - 100, 30)
    Sleep(1)
    WEnd

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

    Func _stop()
    While 1
    Sleep(100)
    WEnd
    EndFunc ;==>_stop

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

    Func _counter($s_Date, $s_time)
    Local $returnValue = ''
    If Not _DateIsValid($s_Date & ' ' & $s_time) Then Return -1
    Local $NumberOfSeconds = _DateDiff('s', $s_Date & ' ' & $s_time, _NowCalc())
    Return StringFormat('Days = %.02d' & @CRLF & 'Hours = %.02d' & @CRLF & 'Min = %.02d' & @CRLF & 'Sec = %.02d' & @CRLF & _
    'Msec = %.03d', $NumberOfSeconds / 86400, Mod($NumberOfSeconds / 3600, 24), Mod(($NumberOfSeconds / 60), 60), _
    Mod($NumberOfSeconds, 60), _MSec())
    EndFunc ;==>_counter

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

    Func _MSec()
    Local $stSystemTime = DllStructCreate('ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort')
    DllCall('kernel32.dll', 'none', 'GetSystemTime', 'ptr', DllStructGetPtr($stSystemTime))
    Local $sMilliSeconds = StringFormat('%03d', DllStructGetData($stSystemTime, 8))
    $stSystemTime = 0
    Return $sMilliSeconds
    EndFunc ;==>_MSec

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

    Func _end()
    Exit (0)
    EndFunc ;==>_end

    [/autoit]

    P.S.: der Code ist alt, mittlerweile gibt es auch @Msec

    Mega

  • Hallo, hatte da mal was gebastelt ;)


    [autoit]

    Global $Timer[1]
    $Timer[0] = TimerInit()

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

    While 1
    $RunTimeSplit = SplitTime(Int(TimerDiff($Timer[0])))
    ToolTip("Programm läuft seit: " & $RunTimeSplit[4] & " days, " & $RunTimeSplit[3] & " h, " & $RunTimeSplit[2] & " min, " & $RunTimeSplit[1] & " s, " & $RunTimeSplit[0] & " ms", 1,1)
    Sleep(100)
    WEnd
    Func SplitTime($Time)
    #cs
    $TimeSplit[0] = ms
    $TimeSplit[1] = s
    $TimeSplit[2] = min
    $TimeSplit[3] = h
    $TimeSplit[4] = days
    #ce
    Local $TimeSplit[5]
    If Int($Time / 86400000) > 0 Then
    $TimeSplit[4] = Int($Time / 86400000)
    $Time = $Time - (Int($Time / 86400000) * 86400000)
    Else
    $TimeSplit[4] = 0
    EndIf
    If Int($Time / 3600000) > 0 Then
    $TimeSplit[3] = Int($Time / 3600000)
    $Time = $Time - (Int($Time / 3600000) * 3600000)
    Else
    $TimeSplit[3] = 0
    EndIf
    If Int($Time / 60000) > 0 Then
    $TimeSplit[2] = Int($Time / 60000)
    $Time = $Time - (Int($Time / 60000) * 60000)
    Else
    $TimeSplit[2] = 0
    EndIf
    If Int($Time / 1000) > 0 Then
    $TimeSplit[1] = Int($Time / 1000)
    $Time = $Time - (Int($Time / 1000) * 1000)
    Else
    $TimeSplit[1] = 0
    EndIf
    $TimeSplit[0] = $Time
    Return $TimeSplit
    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Andere Möglichkeit: Die Laufzeit im Titel anzeigen:

    Spoiler anzeigen
    [autoit]


    Opt('WinTitleMatchMode', 2)
    $sTitle = 'Solitär'
    ShellExecute('sol.exe')
    WinWait($sTitle)
    $handle = WinGetHandle($sTitle)
    $iTimer = TimerInit()
    AdlibEnable('_TimeUpdate', 10)
    While WinExists($handle)
    Sleep(100)
    WEnd

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

    Func _TimeUpdate()
    WinSetTitle($handle, '', StringRegExpReplace(WinGetTitle($handle), ' \d{2}:\d{2}:\d{2}.\d{3}', '') & ' ' & _NewTicksToTime(TimerDiff($iTimer)))
    EndFunc ;==>_TimeUpdate

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

    Func _NewTicksToTime($iTicks)
    Local $iHours, $iMins, $iSecs = Int($iTicks / 1000), $iMSecs = $iTicks - $iSecs * 1000
    $iHours = Int($iSecs / 3600)
    $iSecs = Mod($iSecs, 3600)
    $iMins = Int($iSecs / 60)
    $iSecs = Mod($iSecs, 60)
    Return StringFormat('%02i:%02i:%02i.%03i', $iHours, $iMins, $iSecs, $iMSecs)
    EndFunc ;==>_NewTicksToTime

    [/autoit]
  • Hi,
    auch ne Lösung ( ist aus mehreren Code Schnipsel ais diesem Forum):

    [autoit]

    #include <Date.au3>
    _timeup ()

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

    Func _timeup()
    $timeup = _NowCalc ()
    While 1
    Sleep(100)
    $sec = _DateDiff('s', $timeup , _NowCalc ())
    $string = StringFormat("%.02d" & ":" & "%.02d" & ":" & "%.02d", _
    Floor($sec / 3600), Mod(($sec / 60),60), $sec - Floor($sec / 60) * 60)
    ToolTip(@ScriptName & ": Programm läuft seit: " & $string , 0, 0)
    WEnd
    EndFunc

    [/autoit]

    ;-))
    Stefan

    P.S: Code nochmal angepasst

    Einmal editiert, zuletzt von ojo (17. September 2009 um 10:10)

  • Auch eine Lösung hat ^^


    Spoiler anzeigen
    [autoit]


    Dim $h = 0
    Dim $mm = 0
    Dim $ss = 0
    ;Dim $TTage

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

    While 1
    For $i < 0 to 60 Step 1
    Dim $ss = $i
    If $i < 10 Then
    $TT = $h & ":" & $mm & ":0" & $ss
    MsgBox(48, "Achtung", $TT , 1)
    Else
    $TT = $h & ":" & $mm & ":" & $ss
    MsgBox(48, "Achtung", $TT , 1)
    EndIf
    ; Ich will nicht alles vorwegnehmen. Mach die mm so wie du es haben willst $mm < 10 dann schreibe 01 ....
    ;Sleep 1s (Msg braucht 1s um auzupopen, wenn du Input oder so verwendest empfehler ich Sleep für eine 1s)
    If $i = 59 Then
    $mm = $mm + 1
    Dim $i = 0
    If $mm = 60 Then
    $h = $h + 1
    Dim $mm = 0
    If $h = 24 Then
    Dim $h = 0
    ;Hir rein komt die If für $TTage Kanste fertig machen
    EndIf
    EndIf
    EndIf
    Next
    WEnd

    [/autoit]
  • Gibt es auch eine möglich keit so einen timer im gui einzubauen und keine While zu benutzen das er nicht dauernd aktualisiert sondern selbständig mitläuft und du andere befehle ausführen kannst (gleichzeitig das der timer nicht stoppt)

  • Ich würde es so machen erstmal nur im kopf

    While 1
    (TimerCode) Bei meiner Lösung ist &TT mit allen Aktuellen Wehrten versorgt.
    Switsch
    Case 1
    Ziehe Aktuelle Daten von &TT mach weiter
    (TimerCode)
    Case 2
    Ziehe Aktuelle Daten von &TT mach weiter
    (TimerCode)
    EndSchwitsch
    Wend

    Denke so geht nicht viel Zeit verloren. Doch am besten ist das eine System Zeit Variable nur für die Sekunden. So verliereste niemals ms.

  • also gibt es gar keine möglich keit das man es nur einmal aufruft und er macht es automatisch immer wieder ohne neu aufrufen bzw das er es nicht neu aufruft weil ja darunter gleich andere while true kommt und die ja nicht wieder zurück geht bis zum programm ende also ein timer einmal aufrufen und er zählt dann von selbst weiter (im gui wenn möglich / per GUICtrlCreateLabel (dd " | " hh ":" mm ":" ss, 464, 4, 300, 13)

    lg christian

  • Hi,

    für meine Funktion:

    AdlibEnable ("_timeup", 1000) ; jede Sekunde Funktion _timeup ausführen

    ;-))
    Stefan

    [autoit]

    #include <Date.au3>
    Global $timeup = _NowCalc ()
    AdLibEnable ("_timeup", 1000)

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

    Func _timeup()
    $sec = _DateDiff('s', $timeup , _NowCalc ())
    $string = StringFormat("%.02d" & ":" & "%.02d" & ":" & "%.02d", _
    Floor($sec / 3600), Mod(($sec / 60),60), $sec - Floor($sec / 60) * 60)
    ToolTip(@ScriptName & ": Programm läuft seit: " & $string , 0, 0)
    EndFunc

    [/autoit]
  • danke das erste wo mal bis jetzt funktioniert muss dann später schauen ob auch andere sachen dann noch funktionieren ich hoff es mal :D danke :D für den code :D :thumbup:

  • ok hab den script noch mal gepostet als hilfe für andere

    danke noch mals an die wo mir helfen wollten und an dich (ojo) das du mir geholfen hast :D


    Spoiler anzeigen
    [autoit]


    HotKeySet ("{ESC}", "_exit")
    HotKeySet ("{PAUSE}", "_pause")

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

    #include <GUIConstantsEx.au3>
    #Include <Timers.au3>
    #include <Date.au3>
    #Include <GuiStatusBar.au3>
    #include <StaticConstants.au3>
    #include <DateTimeConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt ("TrayMenuMode",1)
    Opt ("MustDeclareVars", 0)

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

    $gui001 = GUICreate ("", 400, 20, 0, 0)
    GUISetBkColor (0x000000)
    GUISetState (@SW_SHOW, $gui001)

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

    Global $Secs, $Mins, $Hour, $Time

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

    AdLibEnable ("_zeit0002", 1000)

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

    $zeit0001 = _Timer_SetTimer($gui001, 1000, "_zeit0001", -1)
    $zeit0002 = TimerInit ()
    $zeit0003 = _NowCalc ()

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

    GUISetCursor (3, 3)

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

    Send ("{PAUSE}")

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

    Func _pause ()
    While True
    #cs
    normal Programm Befehl aber Befehl gelöscht
    #ce
    Sleep (1000)
    WEnd
    EndFunc
    Func _zeit0001($hWnd, $Msg, $zeit0001, $dwTime)
    GUICtrlCreateLabel ("Uhrzeit:", 4, 4, 40, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFF00)
    GUICtrlCreateLabel (@HOUR & ":" & @MIN & ":" & @SEC, 44, 4, 50, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFFFF)
    GUICtrlCreateLabel ("Datum:", 104, 4, 40, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFF00)
    GUICtrlCreateLabel (@MDAY & "." & @MON & "." & @YEAR, 144, 4, 60, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFFFF)
    GUICtrlCreateLabel ("Jahrestag:", 214, 4, 60, 13)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFF00)
    GUICtrlCreateLabel (@YDAY, 274, 4, 20, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFFFF)
    GUICtrlCreateLabel ("laufzeit:", 304, 4 , 40, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFF00)
    EndFunc

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

    Func _zeit0002()
    $zeit0004 = _DateDiff('s', $zeit0003 , _NowCalc ())
    $zeit0005 = StringFormat("%.02d" & ":" & "%.02d" & ":" & "%.02d", Floor($zeit0004 / 3600), Mod(($zeit0004 / 60),60), $zeit0004 - Floor($zeit0004 / 60) * 60)
    GUICtrlCreateLabel ($zeit0005, 350, 4 , 150, 13)
    GUICtrlSetBkColor (-1, 0x000000)
    GUICtrlSetColor (-1, 0xFFFFFF)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von SchrotterCh (21. September 2009 um 11:09)