Automatisierung nach Zeit beenden schlägt fehl

  • Hallo,

    für meine Warenwirtschaft habe ich mir eine Automatisierung programmiert, um einen Zahlungsabruf von allein zu starten.

    Manchmal bleibt der hängen, das liegt dann aber an der Warenwirtschaft.

    Daher möchte ich die Automatisierung automatisch nach drei Minuten beenden.

    Hier der Code der Automatisierung


    Nun möchte ich, dass er nach drei Minuten auf jeden Fall aufhört.

    Ich habe mich durch viele Forenbeiträge gearbeitet und folgende Lösungen ausprobiert.

    Aber mit keiner dieser Möglichkeiten hört er nach 3 Minuten auf.

    Was mache ich falsch?

    Danke vorab für die Hilfe.

    Gruß Heiko

  • Vom Prinzip:

    Startzeit loggen und nach JEDEM Schritt prüfen anhand der aktuellen Zeit ob 3 Minuten um sind und ggf. Abbrechen.

    Das wären jedoch etliche Funktionsaufrufe.

    Anders wäre folgendes möglich: Mit einem 2. Programm (oder sich selber mit entsprechenden Parametern) über einen run() befehl starten.

    in einer Schleife 3 Min prüfen ob die PID (durch run zurückgegeben) noch existiert, wenn ja processclose().

    Es gibt aber sicherlich noch eine andere Möglichkeit die ich nicht auf dem Schirm habe.

  • Würde das nicht mit WinWait kollidieren da AdlibRegister dadurch pausiert wird?

    Ich denke nicht, siehe Beispiel (Zeiten verkürzt) :

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Danke für diesen Lösungsweg.

    Dafür reicht aber leider meine Kenntnis nicht. Die PID ist ja immer eine andere.

    Dürfte ich so dreist sein und fragen, wie das aussehen sollte?

  • Nur aus Interesse : Hast Du mal die Variante mit AdlibRegister ausprobiert ?

    Einfach

    Global $hTimer = TimerInit()
    AdlibRegister("_CheckRunningTime", 1000)

    an den Anfang des Programm setzen und am Ende des Skriptes die o.a. Funktion hinzufügen.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Nein, aber Danke dennoch für deine Hilfe.

    Das habe ich mir aber notiert, ist ein guter Tipp, wenn ich es brauche.

    Weil wenn ich es richtig verstanden habe, muss ich dies dann für jedes Fenster machen?

    Weil es kann an verschiedenen Fenstern hängen bleiben.

    Also müsste ich dies für jede Fensterabfrage dazwischen setzen?

    Das Script soll alle 5 Minuten einmal durchlaufen.

    Dabei schaut es ob Zahlungen da sind. Wenn nicht, dann bleibt es hängen, weil ein Button ausgegraut ist.

    Wenn das Script sich dann nach einer gewissen Zeit beendet und neu startet, reicht dies aus.

    Oder habe ich das mit den Fenstern missverstanden?

    Ich habe es jetzt wie folgt gelöst.


    Aus dem Abrufscript habe ich eine .exe gemacht und dann folgendes Script

  • Weil wenn ich es richtig verstanden habe, muss ich dies dann für jedes Fenster machen?

    Weil es kann an verschiedenen Fenstern hängen bleiben.

    Also müsste ich dies für jede Fensterabfrage dazwischen setzen?

    Nein, müsstest Du nicht - einmal am Anfang reicht.

    Das von Moombas vorgeschlagene "Steuerskript" ist aber aber eine Möglichkeit, zumal damit die Abruf.exe alle 5 Minuten neu gestartet wird.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."