Brauche Hilfe stellung zu den Befehl " _Timer_SetTimer "

  • Hallo an alle!

    Ich habe hier ein Skript der nicht Funktioniert

    [autoit]

    #include <Timers.au3>

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

    Func wMSG($pMessage, $pTime)
    Local $wMAIN = GUICreate("Testos", 640, 480)
    Local $oLABEL = GUICtrlCreateLabel([usw...])
    Local $oOKBTN = GUICtrlCreateButton([usw...])
    GUISetState(@SW_SHOW, $wMAIN)
    Global $tTIMERID = _Timer_SetTimer($wMAIN, ($pTime*(60*(60*1000))), "CallFunc_CloseOwnMsg" )
    While(1)
    [usw...!!!]
    Wend
    EndFunc

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

    Func CallFunc_CloseOwnMsg($hWnd,$Msg,$iIDTimer,$dwTime)
    GUIDelete($wMAIN)
    _Timer_KillTimer( $tTIMERID)
    End Func

    [/autoit]

    Da ich mit der Funktion nicht vertraut bin weil ich die UDFs Hilfe zum ersten mal habe!

    fehlt da was beim Skript oder ist da was Falsch????


    Würde gern ein Beispiel haben wenn es geht mit einer " MsgBox " so ungefähr ausehen tut!

    Spoiler anzeigen
    [autoit]

    #include <Timers.au3>

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

    Msgbox(4096, "test1", "hier ist die Erste")

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

    Func wMSG($pMessage, $pTime)
    Local $wMAIN = GUICreate("Testos", 640, 480)
    Local $oLABEL = GUICtrlCreateLabel([usw...])
    Local $oOKBTN = GUICtrlCreateButton([usw...])
    GUISetState(@SW_SHOW, $wMAIN)
    Global $tTIMERID = _Timer_SetTimer($wMAIN, ($pTime*(60*(60*1000))), "CallFunc_CloseOwnMsg" )
    While(1)
    [usw...!!!]
    Wend
    EndFunc

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

    Msgbox(4096, "test2", "hier ist die Zweite")

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

    Func CallFunc_CloseOwnMsg($hWnd,$Msg,$iIDTimer,$dwTime)
    GUIDelete($wMAIN)
    _Timer_KillTimer( $tTIMERID)
    End Func

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

    Msgbox(4096, "test3", "hier ist die Dritte") ;die mit der _Timer_SetTimer ???

    [/autoit]

    es würde sehr nett sein wenn jemand mir ein beispiel machen könnte damit ich es Lernen kann wie es Funktioniert.

    Danke schonmal im Vorraus.

    MfG

    Baron1977

  • [usw...] ist undso weiter. nur nochmal zur info.
    und fehlen tut einiges zumbleistift die Richtige GUI Buttons OK, ABRECHEN
    GUICtrlLabel für den Text und noch ein Icon. Sowie die $nMsg = GUIGetMsg Schleife, halt alles um
    den selbst bau Dialog in Laufen zu bringen.

    Ich hab heuer leider keine Zeitmehr für ein beispiel zu machen!!,
    aber ich denke in Kürze werden dir andere Helfen, wie zb. Xenobiologist und BugFix, Funkey usw...

    Schönen Abend noch...
    Mr.Script :thumbup:

  • Mein Ziel ist dies das eine GUI als Text Form in einer bestimmten Zeit
    angezeigt wird, so das wenn mehrere Befehle existieren die dann nicht
    von den Timer_SetTimer beinträchtigt werden. das die anderen befehle
    normal weiter laufen.

    Der Timer_SetTimer soll auf einer
    bestimmten Position des Skript stehen darüber und da runter sind auch
    Befehle die nicht beeinträchtigt werden dürfen. Der Timer darf wirklich
    nur an dieser Stelle stehen

    hier habe ich mal das Skript und
    die Stelle mit diesem Text der makiert ist"; hier müßte der
    Timer_SetTimer drin stehen und starten und nach 5 Stunden die GUI
    anzeigen"

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>

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

    Local $iCounter
    Global $g_bAutoRefresh = FALSE

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

    Global $sUsername = '#############'
    Global $sPassword = '################'

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

    Global $url = "http://www.test.de/"

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

    HotKeySet("{ESC}", "Terminate")
    HotKeySet ("{F9}", "AutoRefresh")
    ;~ HotKeySet ("{F10}", "AutoRefresh")

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

    Global $oIE = _IECreate($url)
    $hWND = _IEPropertyGet($oIE, "hwnd")
    WinSetState($hWND, "", @SW_MAXIMIZE)

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

    $oform = _IEFormGetCollection($oIE, 0)
    $oname = _IEFormElementGetObjByName($oform , "login[u]")
    $opasswd = _IEFormElementGetObjByName($oform , "login[p]")
    $obutton = _IEFormElementGetObjByName($oform , "Submit")
    $setname = _IEFormElementSetValue($oname, $sUsername)
    $setpasswd = _IEFormElementSetValue($opasswd, $sPassword)
    _IEAction($obutton, "click")

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

    WinWaitActive("test - Deine Online Galarie - Windows Internet Explorer")

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

    ; hier müßte der Timer_SetTimer drin stehen und starten und nach 5 Stunden die GUI anzeigen
    ; Ohne den Rest des Skriptes zu Stoppen und es ist auch wichtig das nur ab hier die Internet Seite Aktiv ist.
    AutoRefresh ( )

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

    While (WinExists ($hWND))
    Sleep(50)
    Wend

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

    Func AutoRefresh ( )

    Local $iCount
    Local $iSleep = 250

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

    If (not $g_bAutoRefresh) Then
    $g_bAutoRefresh = TRUE

    If $iCounter = 1 Then MsgBox(48, "Aktualisierung", "Aktualierung von 5
    min wieder Aktiv", 4) ; nur hier die MsgBox soll beim 2 mal aktiv
    sein
    $iCounter = 1
    Else
    $g_bAutoRefresh = FALSE
    MsgBox(48, "Aktualisieren", "Aktualisierung von 5 min wurde gestoppt", 4)
    EndIf

    ConsoleWrite ("--- g_bAutoRefresh = "&$g_bAutoRefresh & @crlf)

    While ($g_bAutoRefresh)

    If ($iCount == 300000) Then

    $iCount = 0
    _IEAction($oIE, "refresh")
    EndIf

    $iCount += $iSleep
    Sleep($iSleep) ; 0,25 Sekunden
    Wend

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

    EndFunc

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

    Func Terminate ( )
    Exit 0
    EndFunc

    [/autoit]


    Ich denke, das der Timer_SetTimer die Zeit startet für die GUI die dann
    in 5 Stunden erscheint und trotzdem die anderen Befehle normal
    behandelt. Der Timer_SetTimer sollte genau an dieser Stelle sein, da
    die Internet Seite erst richtig ativ ist, wenn der Befehl WinWaitActiv
    ausgeführt wurde und ab da von 0 anfangen bis die 5 Stunden erreicht
    sind.Dann müsste das GUI mit meinem Text:""Du warst 5 Stunden aktiv"erscheinen


    Ich hoffe mir kann jetzt jemand helfen.


    MfG


    Baron1977

  • Sowas funktioniet am besten mit AdlibEnable

    Hier mal ein kommentiertes Beispiel (glaube von Oscar):

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    Global $iCounterStart = 10 ; hier den Startwert in Sekunden angeben
    $iCounterStart *= 10 ; zum anzeigen der Zehntelsekunden mit 10 multiplizieren
    Global $iCounter = $iCounterStart ; der Countervariable den Startwert zuweisen
    Global $bStartStop = False ; boolesche Variable für Start/Stop Abfrage

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

    Global $hGui = GUICreate('Countdown-Timer', 600, 100) ; Fenster erstellen (Größe = 600x100 Pixel)
    Global $hProgressbar = GUICtrlCreateProgress(10, 10, 580, 20) ; Progressbar erstellen
    GUICtrlSetData(-1, 100) ; den Wert für die Progressbar auf 100% setzen
    Global $hDisplay = GUICtrlCreateLabel(StringFormat('%.1f', $iCounter / 10) & ' sek.', 20, 40, 60, 20) ; die Sekundenanzeige erstellen
    Global $hReset = GUICtrlCreateButton('Reset', 10, 70, 70, 20) ; "Reset"-Button erstellen
    Global $hStart = GUICtrlCreateButton('Start', 90, 70, 70, 20) ; "Start"-Button erstellen
    GUISetState() ; das Fenster anzeigen
    While True ; Endlosschleife starten
    Switch GUIGetMsg() ; abfragen, ob eine Benutzereingabe erfolgte
    Case $hReset ; wenn der Reset-Button angeklickt wurde
    AdlibDisable() ; die zeitgesteuerte Funktion beenden
    $iCounter = $iCounterStart ; den Counter wieder auf den Startwert setzen
    $bStartStop = False ; die Start/Stop-Variable zurücksetzen
    GUICtrlSetData($hDisplay, StringFormat('%.1f', $iCounter / 10) & ' sek.') ; die Sekundenanzeige stellen
    GUICtrlSetData($hProgressbar, 100) ; Progressbar wieder auf 100%
    GUICtrlSetData($hStart, 'Start') ; den Start-Button wieder mit dem Text "Start" belegen
    GUICtrlSetState($hStart, $GUI_ENABLE) ; den Start-Button wieder freigeben
    Case $hStart ; wenn der Start-Button angeklickt wurde
    $bStartStop = Not $bStartStop ; Start/Stop-Variable invertieren (aus False wird True und umgekehrt)
    Switch $bStartStop ; wenn der Wert der Start/Stop-Variablen...
    Case True ; =True, dann...
    GUICtrlSetData($hStart, 'Pause') ; den Start-Button mit dem Text "Pause" belegen
    AdlibEnable('_Countdown', 100) ; die Funktion "_Countdown" alle 100ms aufrufen
    Case False ; =False, dann...
    GUICtrlSetData($hStart, 'Weiter') ; den Start-Button mit dem Text "Weiter" belegen
    AdlibDisable() ; die zeitgesteuerte Funktion beenden
    EndSwitch
    Case $GUI_EVENT_CLOSE ; wenn der Schließen-Button angeklickt oder [ESC] gedrückt wurde
    Exit ; Programm verlassen
    EndSwitch
    If $iCounter <= 0 Then ; wenn der Counter Null erreicht hat, dann...
    AdlibDisable() ; die zeitgesteuerte Funktion beenden
    $iCounter = 1 ; den Counter auf 1 setzen, damit diese If...Then-Anweisung nur einmal ausgeführt wird
    GUICtrlSetState($hStart, $GUI_DISABLE) ; den Start-Button sperren (reagiert nicht mehr auf Mausklicks)
    MsgBox(0, 'Countdown-Timer', 'Zeit um!') ; Eine Meldung ausgeben
    EndIf
    WEnd

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

    Func _Countdown()
    $iCounter -= 1 ; den Counterwert um 1 verringern
    GUICtrlSetData($hProgressbar, Int(100 / $iCounterStart * $iCounter)) ; den neuen Wert in der Progressbar anzeigen
    GUICtrlSetData($hDisplay, StringFormat('%.1f', $iCounter / 10) & ' sek.') ; und als Sekundenwert darstellen
    EndFunc ;==>_Countdown

    [/autoit]