Aktuelle Uhrzeit in GUI + Internetprüfung

  • Hallo,

    ich schreibe gerade an zwei Scripts. Habe 2 Probleme :D

    Also das erste:

    in der GUI soll die aktuelle Uhrzeit stehen. Die Uhrzeit, als das Prog aufgerufen wurde, wäre ja kein Problem. Aber das aktualisiert sich ja dann nicht, so dass immer die aktuelle Uhrzeit da steht.

    Das zweite:

    Wenn ich eine Endlosschleife mit nem Ping zu Google.com erstelle, kann ich ja so die Internetverbindung prüfen. Funktioniert auch alles. Allerdings will der Beenden-Button, obwohl er "konfiguiert" ist, nicht mehr seine Funktion tun :D
    Das gleiche wenn die GUI gerade eine Internetseite lädt, will er nicht beenden, bis die Seite fertig geladen hat.

    Ich hoffe ihr könnt mir helfen.
    MfG

  • in der GUI soll die aktuelle Uhrzeit stehen. Die Uhrzeit, als das Prog aufgerufen wurde, wäre ja kein Problem. Aber das aktualisiert sich ja dann nicht, so dass immer die aktuelle Uhrzeit da steht.


    Die Uhrzeit wird in deinem SKript wahrscheinlich nur einmalig abgefragt.
    Pack die Zeitabfrage in ne whileschleife...

    Funktioniert auch alles. Allerdings will der Beenden-Button, obwohl er "konfiguiert" ist, nicht mehr seine Funktion tun :D


    Du verwendest glaub ich zwei Whileschleifen, die parallel zu einander laufen sollen. Geht nicht.... Guigetmsg kann nicht mehr funktionieren, wenn sich das Skript in der "Endlos-Ping-Schleife" befindet :D

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

    • Offizieller Beitrag

    Zu1.
    Schau dir mal das Beispiel zu _Timer_SetTimer an, da gibt es eine Uhr in der Statusbar.
    Das ist leicht zu übernehmen.

  • Hallo,
    kann mir jmd. das mit der Internetverbindung ma geben (nen Beispiel)..kriegs nimma so wie früher hin :D

  • Benutze einfach AdlibRegister, in der Hilfe ist ein Beispiel dazu. Wenn du ,wie BadBunny vermutet, 2 While Schleifen Parallel ablaufen lassen willst, dann solltest du dir mal überlegen, was genau dein Script in welcher Reihenfolge macht ;). 2 Endlosschleifen parallel können logischerweise gar nicht funktionieren...

  • was mach ich falsch..

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    $G = GUICreate("Name", 615, 446, 193, 129)
    $Internetverbindung = GUICtrlCreateLabel("Internetverbindung besteht", 456, 420, 150, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0x008000)
    GUISetState(@SW_SHOW)
    $Keine_Internetverbindung = GUICtrlCreateLabel("Keine Internetverbindung", 456, 420, 150, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0xFF0000)

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

    AdlibRegister ( "Internetverbindung" )

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

    Func Internetverbindung ()
    Ping ( "http://google.com" )
    If @error = 0 Then
    GUICtrlDelete ( $Keine_Internetverbindung )
    $Internetverbindung = GUICtrlCreateLabel("Internetverbindung besteht", 456, 420, 150, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0x008000)
    Else
    GUICtrlDelete ( $Internetverbindung )
    $Keine_Internetverbindung = GUICtrlCreateLabel("Keine Internetverbindung", 456, 420, 150, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0xFF0000)
    EndIf
    EndFunc

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

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

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

    EndSwitch
    WEnd

    [/autoit]
  • Hier das iss alles:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <Date.au3>

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

    $G = GUICreate("Name", 615, 446, 193, 129)
    $Internetverbindung = GUICtrlCreateLabel("Internetverbindung besteht", 100, 100, 400, 400)
    GUICtrlSetFont(-1, 10, 600, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0x008000)
    GUISetState(@SW_SHOW)
    $Keine_Internetverbindung = GUICtrlCreateLabel("Keine Internetverbindung", 100, 100, 400, 400)
    GUICtrlSetFont(-1, 10, 600, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0xFF0000)

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

    Global $TimerStart = TimerInit()
    Global $ResetTimer = 0

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

    Func Internetverbindung()
    Ping("http://www.google.com")
    If @error <> 0 Then
    GUICtrlDelete ( $Keine_Internetverbindung )
    $Internetverbindung = GUICtrlCreateLabel("Internetverbindung besteht", 100, 100, 400, 400)
    GUICtrlSetFont(-1, 10, 600, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0x008000)
    GUICtrlSetState($Internetverbindung,@SW_HIDE)
    GUICtrlSetState($Keine_Internetverbindung,@SW_SHOW)
    Else
    GUICtrlDelete ( $Internetverbindung )
    $Keine_Internetverbindung = GUICtrlCreateLabel("Keine Internetverbindung", 100, 100, 400, 400)
    GUICtrlSetFont(-1, 10, 600, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetState($Keine_Internetverbindung,@SW_SHOW)
    GUICtrlSetState($Internetverbindung,@SW_HIDE)
    EndIf
    EndFunc

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

    While 1
    WinSetTitle($G,"",_NowTime(5))
    $Timer = int(TimerDiff($TimerStart))
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    If $Timer - $ResetTimer >= 1000 Then
    Internetverbindung()
    $ResetTimer = $Timer
    EndIf
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Hier ist ein Beispiel mit Timern, dabei wird die Hauptschleife nicht blockiert.#

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <Timers.au3>
    $G = GUICreate("Name", 615, 446, 193, 129)
    $Time = GUICtrlCreateLabel("", 20, 420, 80, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0x008000)
    $Internetverbindung = GUICtrlCreateLabel("Internetverbindung besteht", 400, 420, 150, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0x008000)
    GUICtrlSetState(-1,$GUI_HIDE)

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

    $Keine_Internetverbindung = GUICtrlCreateLabel("Keine Internetverbindung", 400, 420, 190, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0xFF0000)
    GUISetState(@SW_SHOW)
    _Timer_SetTimer($G, 1000, "_UpdateStatusBarClock")
    _Timer_SetTimer($G, 1100, "Internetverbindung")

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

    Func Internetverbindung($hWnd, $Msg, $iIDTimer, $dwTime)
    Ping("www.google.com", 1000); Timeout auf 1 Sekunde
    If not @error Then
    GUICtrlSetState($Internetverbindung,$GUI_SHOW)
    GUICtrlSetState($Keine_Internetverbindung,$GUI_HIDE)
    Else
    GUICtrlSetState($Internetverbindung,$GUI_HIDE)
    GUICtrlSetState($Keine_Internetverbindung,$GUI_SHOW)
    EndIf
    EndFunc ;==>Internetverbindung

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

    Func _UpdateStatusBarClock($hWnd, $Msg, $iIDTimer, $dwTime)
    #forceref $hWnd, $Msg, $iIDTimer, $dwTime
    GUICtrlSetData($Time, StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC))
    EndFunc ;==>_UpdateStatusBarClock

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

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

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

    EndSwitch
    WEnd

    [/autoit]

    KingLoL, dein Script wird blockiert sobald keine Internetverbindung besteht. Das TimeOut bei Ping ist per Standard auf 4 Sekunden. So lange wird das Script nicht mehr funtionieren.

  • Danke an Raupi, dein Script funktioniert komplett. Habe auch das mit den 2 Sekunden wie King, aber ist ja nicht schlimm. :D

    Danke auch an alle anderen die geholfen haben.

    Super Community, wie gewohnt ;)

    • Offizieller Beitrag

    Also bei mit hängt das Script nicht alle 2 Sekunden.

    Teste mal bitte das:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <Timers.au3>

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

    $G = GUICreate("Name", 615, 446, 193, 129)
    $TestLabel =GUICtrlCreateLabel("",100,100,100,17)
    $Time = GUICtrlCreateLabel("", 20, 420, 80, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0x008000)
    $Internetverbindung = GUICtrlCreateLabel("Internetverbindung besteht", 400, 420, 150, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0x008000)
    GUICtrlSetState(-1,$GUI_HIDE)

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

    $Keine_Internetverbindung = GUICtrlCreateLabel("Keine Internetverbindung", 400, 420, 190, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "Arial Narrow")
    GUICtrlSetColor(-1, 0xFF0000)
    GUISetState(@SW_SHOW)
    $Timer1= _Timer_SetTimer($G, 1000, "_UpdateStatusBarClock")
    $Timer2= _Timer_SetTimer($G, 1500, "Internetverbindung")

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

    Func Internetverbindung($hWnd, $Msg, $iIDTimer, $dwTime)
    _Timer_KillTimer($hWnd, $Timer2)
    Ping("www.google.com", 1000)
    If not @error Then
    GUICtrlSetState($Internetverbindung,$GUI_SHOW)
    GUICtrlSetState($Keine_Internetverbindung,$GUI_HIDE)
    Else
    GUICtrlSetState($Internetverbindung,$GUI_HIDE)
    GUICtrlSetState($Keine_Internetverbindung,$GUI_SHOW)
    EndIf
    $Timer2= _Timer_SetTimer($G, 1500, "Internetverbindung")
    EndFunc ;==>Internetverbindung

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

    Func _UpdateStatusBarClock($hWnd, $Msg, $iIDTimer, $dwTime)
    #forceref $hWnd, $Msg, $iIDTimer, $dwTime
    GUICtrlSetData($Time, StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC))
    EndFunc ;==>_UpdateStatusBarClock

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

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

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

    EndSwitch
    WEnd

    [/autoit]