Counter gesucht

  • Hallo,

    ich suche einen Counter. Er soll bis zu einem Tag X Uhrzeit 14:00 ablaufen. Wer kennt ein solches Script? ?(

    Da ich nicht so viel Programmiere, wäre ich für eine Unterstützung dankbar.

    Diese Conter soll die Arbeitszeit eines Kollegen anzeige. der am 30.11 in Rente geht.

    Es sollen groß auf einem zetien Bildschirm am AP angezeigt weden.

    Gruß

  • Moin

    @HOUR und @MIN geben die aktuelle Stunde und Minute an. Eine Überprüfung danach könnte wie folgt aussehen:

    [autoit]

    $CurrentTime = @HOUR &":" &@MIN
    $EndTime = InputBox("Endzeit eintragen!", "Tragen Sie die Endzeit des Timers ein:", "14:00")
    While True
    Sleep(60000)
    If $CurrentTIme = $EndTime Then
    MsgBox(0, "", "Zeit erreicht, timer abgelaufen!")
    EndIf
    WEnd

    [/autoit]

    Bild1: Ich beim debuggen

  • teste ich gleich....

    der Tag und die Zeit kann fest angegeben werden, bzw brauch nicht abgefragt werden.

    Hauptsache der Counter läuft, wenn der PC eingeschaltet wird.

    Okay, da fehlt mir noch etwas....

    ?(

    Das würde ich über Autorun steuern.

  • Wie wäre es hiermit?

    Danke bitte an: Make-Grafik der dieses Script zum großteil geschrieben hatte (Ich habe eine Uhrzeit-Eingabe nach bestimmten kriterien benötigt). Ich habe lediglich die Schleife zum hochzählen geschrieben/das Script bearbeitet.

    Grüße

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <StaticConstants.au3>
    ;~ ***
    Opt('GUIOnEventMode', 1)
    Opt('GUICloseOnEsc', 0)
    ;~ ***
    Global $Save_Input_1 = ''
    Global $Save_Input_2 = ''
    Global $Save_Input_3 = ''
    ;~ # INFO >>
    ;~ > Diese beiden Variablen sind als Speicherort gedacht.
    ;~ > Diese helfen dass die 2 Lables nur dann geändert werden,
    ;~ > wenn eine Eingabe erfolgt wurde.

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

    ;~ +| ===== ===== ===== ===== ===== |+

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

    Global Const $GUI = GUICreate('Counter', 180, 40)
    Global Const $Input_1 = GUICtrlCreateInput('00', 10, 10, 50, 20)
    Global Const $Input_2 = GUICtrlCreateInput('00', 60, 10, 50, 20)
    Global Const $Input_3 = GUICtrlCreateInput('00', 100, 10, 50, 20)
    Global Const $Label_1 = GUICtrlCreateLabel('', 10, 10, 45, 20, $SS_CENTER)
    Global Const $Label_2 = GUICtrlCreateLabel(':', 55, 10, 10, 20, $SS_CENTER)
    Global Const $Label_3 = GUICtrlCreateLabel('', 65, 10, 50, 20, $SS_CENTER)
    Global Const $Label_4 = GUICtrlCreateLabel(':', 110, 10, 10, 20, $SS_CENTER)
    Global Const $Label_5 = GUICtrlCreateLabel('', 125, 10, 50, 20, $SS_CENTER)
    ;~ ***
    GUICtrlSetState($Input_1, $GUI_HIDE)
    GUICtrlSetState($Input_2, $GUI_HIDE)
    GUICtrlSetState($Input_3, $GUI_HIDE)
    ;~ ***
    GUICtrlSetFont($Label_1, 15)
    GUICtrlSetFont($Label_2, 15)
    GUICtrlSetFont($Label_3, 15)
    GUICtrlSetFont($Label_4, 15)
    GUICtrlSetFont($Label_5, 15)
    ;~ ***
    GUICtrlSetOnEvent($Label_1, '_SetFocus_1')
    GUICtrlSetOnEvent($Label_3, '_SetFocus_2')
    GUICtrlSetOnEvent($Label_5, '_SetFocus_3')
    ;~ # INFO >>
    ;~ > Weil es nicht möglich ist mit der Maus manuell zwischen den Input Controls zu wechseln,
    ;~ > werden beim draufklicken der Fokus auf diese gewechselt.
    GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit', $GUI)
    GUISetState(@SW_SHOW, $GUI)

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

    Global $sEndzeit = "14:00:00"
    ;~ # INFO >>
    ;~ > Hier die gewünschte Endzeit im Format HH:MM:SS eintragen.
    Global $aEndzeit = StringSplit($sEndzeit, ":")
    ;~ +| ===== ===== ===== ===== ===== |+

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

    ;~ +| ===== ===== ===== ===== ===== |+

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

    While @HOUR & ":" & @MIN & ":" & @SEC < $sEndzeit
    Local $sStunde, $sMinute, $sSekunde
    For $sStunde = 0 To $aEndzeit[1]
    For $sMinute = 0 To 59
    For $sSekunde = 1 To 59
    Sleep(1000)
    If _Check($Input_1, $Save_Input_1) Then GUICtrlSetData($Label_1, GUICtrlRead($Input_1))
    If _Check($Input_2, $Save_Input_2) Then GUICtrlSetData($Label_3, GUICtrlRead($Input_2))
    If _Check($Input_3, $Save_Input_3) Then GUICtrlSetData($Label_5, GUICtrlRead($Input_3))
    GUICtrlSetData($Input_3, $sSekunde)
    Next
    GUICtrlSetData($Input_3, "00")
    GUICtrlSetData($Input_2, $sMinute+1)
    Next
    GUICtrlSetData($Input_2, "00")
    GUICtrlSetData($Input_3, "00")
    GUICtrlSetData($Input_1, $sStunde+1)
    Next
    WEnd

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

    ;~ +| ===== ===== ===== ===== ===== |+

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _Check($Control, ByRef $Save)
    Local Const $Read = GUICtrlRead($Control)
    If $Read <> $Save Then
    $Save = $Read
    Return True
    Else
    Return False
    EndIf
    ;~ # INFO >>
    ;~ > Diese Funktion verhindert, dass die Labels permament flackern.
    ;~ > Es wird geprüft ob das Input Control ungleich den gespeicherten Wert ist.
    ;~ > Wenn dies der Fall ist, wird der neue Wert in die entsprechende Variable gespeichert.
    ;~ > Danach wird TRUE Returnt und die If-Abfrage in der Hauptschleife wird ausgeführt.
    ;~ > Erst dann wird das Label verändert!
    EndFunc

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

    Func _SetFocus_1()
    ControlFocus($GUI, '', $Input_1)
    GUICtrlSetData($Input_1, '')
    EndFunc

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

    Func _SetFocus_2()
    ControlFocus($GUI, '', $Input_2)
    GUICtrlSetData($Input_2, '')
    EndFunc

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

    Func _SetFocus_3()
    ControlFocus($GUI, '', $Input_3)
    GUICtrlSetData($Input_3, '')
    EndFunc

    [/autoit]

    Grüße Yaerox

    Grüne Hölle

    2 Mal editiert, zuletzt von Yaerox (19. November 2012 um 14:59)

  • Hmmm...

    evtl habe ich mich nicht richtig ausgedrückt.

    Ich häte gerne eine ( große ) Anzeige wieviel Zeit der Mitarbeiter noch arbeiten muss.
    Egal ob er wirklich arbeitet, oder Zuhause ist.
    Startet der PC soll auf einem zweite Monitor die Restzeit ( am 30.11 um 14:00 Uhr Beginn Ruhestan ) angezeit werden.

    Gruß

  • Meinst das so?

    Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Global $hour, $Mins, $secs
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 280, 80, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_POPUP, $WS_GROUP, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))
    $Label1 = GUICtrlCreateLabel("Label1", 8, 8, 500, 100)
    GUICtrlSetFont(-1, 40, 400, 0, "Arial")
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    _Update()
    AdlibRegister("_Update", 1000)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _Update()
    _TicksToTime(_DateDiff('s', _NowCalc(), "2013/01/01 00:00:00") * 1000, $hour, $Mins, $secs)
    GUICtrlSetData($Label1, StringFormat("%02i:%02i:%02i", $hour, $Mins, $secs))
    EndFunc ;==>_Update

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • ja, das ist es.

    Habe das Datum ein getragen, kan ich 14:00 mit "14" angegeben, oder mit 02?

    Jetzt noch das ganze in groß ( 800x600 ) schwarz mit roter schrift....

    ich müsste das Fenster verschieben können, das geht jetzt nicht.....

    2 Mal editiert, zuletzt von firewalldevil (19. November 2012 um 13:05)

  • Spoiler anzeigen
    [autoit]

    #include <Date.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Global $hour, $Mins, $secs
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 800, 600, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_POPUP, $WS_GROUP, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))
    GUISetBkColor(0x000000)
    $Label1 = GUICtrlCreateLabel("Label1", 10, 10, 780, 580, $SS_CENTERIMAGE)
    GUICtrlSetFont(-1, 150, 400, 0, "Arial")
    GuiCtrlSetColor($Label1, 0xFF0000)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    _Update()
    AdlibRegister("_Update", 1000)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _Update()
    _TicksToTime(_DateDiff('s', _NowCalc(), "2012/11/19 15:00:00") * 1000, $hour, $Mins, $secs)
    GUICtrlSetData($Label1, StringFormat("%02i:%02i:%02i", $hour, $Mins, $secs))
    EndFunc ;==>_Update

    [/autoit]


    Grüße

    Grüße Yaerox

    Grüne Hölle

  • Wenn du das

    [autoit]

    , BitOR($WS_MINIMIZEBOX, $WS_POPUP, $WS_GROUP, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE)

    [/autoit]

    in der Zeile GUICreate entfernst hast du ein normales Fenster das du dann verschieben kannst (wirst ja wahrscheinlich eine Desktoperweiterung o.ä. haben).

    Grüße Yaerox

    Grüne Hölle

  • Änder mal alternativ die Zeile

    [autoit]


    $Form1 = GUICreate("Form1", 800, 600, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_POPUP, $WS_GROUP, $WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST, $WS_EX_WINDOWEDGE))

    [/autoit]


    in

    [autoit]

    $Form1 = GUICreate("Form1", 800, 600, -1, -1)

    [/autoit]

    Grüße Yaerox

    Grüne Hölle

  • Scheint mir ein wenig kontrraproduktiv...man soll ja trotzdem weiterarbeiten können. Ausserdem würde mich das an seiner Stelle so stressen, dass ich das Teil sofort beenden oder abschiessen würde.
    Da liesse sich mit einer If-Abfrage und einem Sleep bestimmt was machen.

    Bild1: Ich beim debuggen