Bestimmen, wie lang das Script maximal brauchen darf, um einmal komplett durch zu sein

  • Hallo,

    Gibt es eine Möglichkeit einzustellen, wie lange es maximal dauern darf, bis das Script einmal komplett durchgegangen wurde?

    Sollte das Script nicht komplett durchgehen können weil unerwartet ein Fehler auftritt z.B. hier:

    [autoit]

    ShellExecute("http://www.google.de")
    Sleep(3000)
    While Not WinExists("Google - Mozilla Firefox")
    Send("{F5}")
    Sleep(3000)
    WEnd
    If Not WinActive("Google - Mozilla Firefox") Then WinActivate("Google - Mozilla Firefox")

    [/autoit]


    )
    Nehmen wir an Google ist dummerweiße die ganze Zeit down.. sprich er wiederholt diesen Abschnitt immer und immer wieder.
    Kann man einstellen, dass das Script nach z.B. 60 Sekunden beendet wird, den Browser schließt und dann nach kurzer Pause wieder das Script von vorne startet und von neuem beginnt?

    mfg

    edit bernd670: Code-Tags gesetzt

    Einmal editiert, zuletzt von bernd670 (18. April 2009 um 22:37)

  • schau Dir mal TimerInit & TimerDiff an...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    • Offizieller Beitrag

    Hallo,

    So wird nach >60 Sekunden das Programm beendet.

    Spoiler anzeigen
    [autoit]

    ShellExecute("http://www.google.de")
    Sleep(3000)
    $tstart = TimerInit()
    While Not WinExists("Google - Mozilla Firefox")
    If TimerDiff($tstart) > 60000 Then Exit
    Send("{F5}")
    Sleep(3000)
    WEnd
    If Not WinActive("Google - Mozilla Firefox") Then WinActivate("Google - Mozilla Firefox")

    [/autoit]

    Sithlord95: Dieses If benötigt kein EndIf und die Reihenfolge ist auch ok.

  • hier miene lösung

    [autoit]


    ; das ganze geht nur wenn mozilla dien standart browser ist !!!!!!!!!!!!!!
    #include <process.au3>
    ping("www.google.de") ; damit wird gecheckt ob google down oder nich down ist es könnte auch dein inet down sein der prozess läuft im hintergrund du siehst ihn also nciht
    if @error Then
    msgbox(0, "fehler", @error) ; wenn ein fehler kommt wirst du benachrichtigt
    exit ; <--- wenn ein fehler kommt schließt sich das script nach dem ok drücken der msgbox
    endif
    _RunDOS("start http://www.google.de") ; das ruft google auf
    sleep(500) ; halbe sekunde warten is sogar schon zu viel naja wie du willst^^

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

    while 999
    ping("www.google.de") ; damit wird gecheckt ob google down oder nich down ist es könnte auch dein inet down sein der process läuft im hintergrund du siehst ihn also nciht
    if @error Then
    msgbox(0, "fehler", @error) ; wenn ein fehler kommt wirst du benachrichtigt
    exit ; <--- wenn ein fehler kommt schließt sich das script nach dem ok drücken der msgbox das heißt er pingt immer wieder ob google oder dein internet d noc hda sind^^
    endif
    sleep(1)
    if not ProcessExists("firefox.exe") then ;wenn der prozess nich existiert mach er das immer wieder
    send("b" & "{F5}" & "b") ; was sollte das den meinst du anstatt [b] den buchstaben b? ich denke er soll die 3 tasten senden^^
    sleep(2000)
    endif ; hier schließt sich die "wenn" bedingung
    wend

    [/autoit]
  • hab eure versionen probiert allerdings ohne erfolg

    Gibt es den keine Möglichkeit das im fall das es hängen bleibt irgendwo das es nach einer gewissen eingestellten zeit automatisch neu startet würde das auch benötigen!

  • @Kennethsoona:
    Was genau möchtest du denn erreichen?
    Eine Seite so oft laden bis sie erreichbar ist? Testen ob sie erreichbar ist? Soll der Browser immer wieder neu starten?

    Kann er auch offen bleiben?
    Wie wärs dann damit:

    Spoiler anzeigen
    [autoit]

    #include <FF.au3>

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

    If _FFConnect() Then
    Do
    _FFOpenURL("google.de")
    If StringInStr(_FFCmd(".location.href"), "google.de" ) Then ExitLoop
    Sleep(60000)
    Until True
    EndIf

    [/autoit]
  • Also ...
    bei

    [autoit]

    Do
    Until True

    [/autoit]


    Ist die Bedingung sofort erfüllt und der Loop läuft nur einmal.
    Wenn dann so:

    [autoit]

    Do
    Until False

    [/autoit]

    Mit der Abbruchbedingung drin... ;)

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.