1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. derHeiko

Beiträge von derHeiko

  • Automatisierung nach Zeit beenden schlägt fehl

    • derHeiko
    • 5. Mai 2021 um 14:18

    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

    Code
    Example()
    
    Func Example()
    
       While True
        ; Run Abrufscript.
        Local $iPID = Run("C:\Users\Administrator\Desktop\abruf.exe", "", @SW_SHOWMAXIMIZED)
    
        ; Wait for 5 Minutes.
        Sleep(300000)
    
        ; Close the Abfrufscript process using the PID returned by Run.
        ProcessClose($iPID)
         WEnd
     EndFunc   ;==>Example
    Alles anzeigen
  • Automatisierung nach Zeit beenden schlägt fehl

    • derHeiko
    • 5. Mai 2021 um 13:38

    Habe eine Lösung gefunden:

    https://www.autoitscript.com/autoit3/docs/functions/Run.htm

    Danke für den Tipp. Damit kann ich arbeiten ;)

  • Automatisierung nach Zeit beenden schlägt fehl

    • derHeiko
    • 5. Mai 2021 um 13:12
    Zitat von Moombas

    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.

    Alles anzeigen

    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?

  • Automatisierung nach Zeit beenden schlägt fehl

    • derHeiko
    • 5. Mai 2021 um 11:42

    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

    Code
    MsgBox (0,"Wartezeit","Schleife beginnt",2)
    ; Büro Fenster nach vorne holen
    MsgBox (0,"Wartezeit","Büro Fenster nach vorne holen",2)
    WinActivate ("frmBP","Schnellzugriffsleist")
    WinWait("frmBP","Schnellzugriffsleist")
    WinWaitActive("frmBP","Schnellzugriffsleist")
    
    
    
    
    ; Warten
    Sleep(2000)
    
    
    ; Girokonto wird abgerufen
    MouseClick("left",365,81,1)
    Send("{ALTDOWN}q{ALTUP}")
    Send("{ALTDOWN}q{ALTUP}")
    
    
    
    
    WinWait("Import von Kontoauszügen","Zahlungsverkehrdaten")
    WinWaitActive("Import von Kontoauszügen","Zahlungsverkehrdaten")
    Sleep(2000)
    MouseClick("left",425,293,1)
    Send("{ALTDOWN}f{ALTUP}")
    WinWait('Import von Kontoauszügen','Zu Ihrer Information')
    WinWaitActive('Import von Kontoauszügen','Zu Ihrer Information')
    Sleep(2000)
    Send("{ALTDOWN}ß{ALTUP}")
    
    
    ; Paypal wird abgerufen
    
    
    ; Warten
    Sleep(2000)
    ; Einige Tastendrücke senden
    MouseClick("left",350,98,1)
    Send("{ALTDOWN}w{ALTUP}")
    WinWait("Import von Kontoauszügen","Zahlungsverkehrdaten")
    WinWaitActive("Import von Kontoauszügen","Zahlungsverkehrdaten")
    Sleep(2000)
    MouseClick("left",507,261,1)
    Send("{ALTDOWN}f{ALTUP}")
    WinWait('Import von Kontoauszügen','Zu Ihrer Information')
    WinWaitActive('Import von Kontoauszügen','Zu Ihrer Information')
    Sleep(2000)
    Send("{ALTDOWN}ß{ALTUP}")
    
    
    ; Offene Posten werden zugewiesen
    
    
    ; Warten
    Sleep(2000)
    Send("{ALTDOWN}e{ALTUP}")
    MouseClick("left",543,79,1)
    WinWait("Offene Posten den Kontobewegungen zuweisen","plClientSchemaAuswah")
    WinWaitActive("Offene Posten den Kontobewegungen zuweisen","plClientSchemaAuswah")
    Sleep(2000)
    Send("{ALTDOWN}w{ALTUP}")
    Sleep(500)
    Send("{ALTDOWN}f{ALTUP}")
    
    
    ; Zahlungsverkehr wird gebucht
    
    
    WinWait("Zuweisungen im Zahlungsverkehreingang buchen","plClientSchemaAuswah")
    WinWaitActive("Zuweisungen im Zahlungsverkehreingang buchen","plClientSchemaAuswah")
    Sleep(2000)
    Send("{ALTDOWN}w{ALTUP}")
    Sleep(500)
    Send("{SPACE}")
    Sleep(500)
    Send("{ALTDOWN}w{ALTUP}")
    Sleep(500)
    Send("{ALTDOWN}f{ALTUP}")
    WinWait("Zuweisungen im Zahlungsverkehreingang buchen","Zu Ihrer Information")
    WinWaitActive("Zuweisungen im Zahlungsverkehreingang buchen","Zu Ihrer Information")
    Sleep(1000)
    Send("{ALTDOWN}ß{ALTUP}")
    Alles anzeigen


    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.

    Code
    Local $Timer = TimerInit()
    While 1
    If TimerDiff($Timer) >= 180 * 1000 Then ExitLoop
    
    
    ;Code
    
    
    WEnd
    
    
    -----------------------------------
    
    
    Global $Timer = TimerInit()
    Do
    
    
    ;code
    
    
    Until TimerDiff($Timer) >= 180 * 1000
    
    
    -----------------------------------
    
    
    Dim $minute = @min
    While 1
    if $minute == @min-3 then
    Exit
    Else
    
    
    ;code
    
    
    Endif
    WEnd
    
    
    -----------------------------------
    
    
    Local $hTimer = TimerInit()
    Do
    ; ... Code
    Until TimerDiff($hTimer) > 180000
    
    
    -----------------------------------
    
    
    Local $hTimer = TimerInit()
    While TimerDiff($hTimer) < 180000
    ; ... Code
    WEnd
    
    
    -----------------------------------
    
    
    Local $hTimer = TimerInit()
    While True
    
    
    ; ... Code
    
    
    If TimerDiff($hTimer) > 180000 Then ExitLoop
    
    
    Sleep(100)
    WEnd
    Alles anzeigen

    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

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™