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. Bucardo

Beiträge von Bucardo

  • Endlosschleife bei PixelChecksum

    • Bucardo
    • 12. Oktober 2019 um 09:26

    Hallo zusammen,


    danke für eure Hilfestellungen! Ich bin im Moment noch unterwegs, ohne die Möglichkeit der Testung eurer Vorschläge.


    Sobald ich die Sachen testen konnte, melde ich mich nochmal!

  • Endlosschleife bei PixelChecksum

    • Bucardo
    • 10. Oktober 2019 um 15:13

    Werde das nachher mit einer IF/THEN/ELSE Funktion ausprobieren. Ich glaube das Problem liegt in der While Funktion und der Tatsache, dass er solange 1=1 ist (im übertragenen Sinne) eben einfach die Schleife abfährt. Diese einmalige Ausführung pro neue Nachricht lässt sich wohl einfacher durch die IF/THEN/ELSE Funktion lösen...


    p.s. das mit dem ausführlichen Aufschreiben lässt sich im Moment schlecht umsetzen, da ich sehr viel unterwegs bin und immer nur kurze Pausen habe.

  • Endlosschleife bei PixelChecksum

    • Bucardo
    • 10. Oktober 2019 um 13:50

    Ich verstehe deinen Punkt. Was mich aber irritiert ist die Tatsache, dass neu eingehende Nachrichten (=Änderung der Prüfsumme) erkannt werden. Im Moment verhält sich das Programm so als hätte ich gar keine Bedingung für die Aktion (=Klicks) eingebaut. Es führt die Klickfolge immer wieder durch.


    Wenn ich deinen Code-Ausschnitt betrachte würde ich erwarten, dass das Skript sich in der „sleep“-Schleife dreht. Aber es führt ja die Mausklicks aus.


    in einem früheren Programm habe ich mal mit Schaltern rumprobiert:


    wenn Bedingung erfüllt und Schalter = 0 -> Aktion und Schalter auf 1. Beim nächsten zu beobachtenden Ereignis Schalter auf 0 und von vorne. Damit ließen sich die „Dauerklicks“ auch vermeiden.

  • Endlosschleife bei PixelChecksum

    • Bucardo
    • 10. Oktober 2019 um 12:42

    Danke für eure Anregungen (und die offenen Worte ;) )


    ich sehe das Problem des Skriptes darin, dass es immer wieder die Klickabfolge durchführt (als Schleife) bis eine neue Nachricht eintrifft, um diese dann wieder in einer Endlosschleife weiterzuleiten.


    ich möchte es aber so haben, dass jede Nachricht nur einmal weitergeleitet wird u d das Skript so lange wartet bis eine neue Nachricht eintrifft.


    Bitte entschuldigt dieses umständliche Rumgewurste :saint:

  • Endlosschleife bei PixelChecksum

    • Bucardo
    • 10. Oktober 2019 um 05:12

    Ich meine es heute Nacht während des Beruhigens unseres Nachwuchses gelöst zu haben:

    Code
    HotKeySet ("1","_start")
    HotKeySet ("2","_pause")
    HotKeySet ("3","_exit")
    
    Global $go = 0
    
    Func _start()
       $go = 1
    EndFunc
    
    Func _pause()
       $go = 0
    EndFunc
    
    Func _exit()
       Exit
    EndFunc
    
    Global $iCheckSum
    
    Func _search()
      $iCheckSum = PixelChecksum(1120, 936, 1632, 952)  ;gebe den aktuellen CheckSum-Wert in die Variable ein
    
       While $iCheckSum = PixelChecksum(1120, 936, 1632, 952) ; solange sich nicht ändert -> warte
        Sleep(1000)
       WEnd
       If $iCheckSum <> PixelChecksum(1120, 936, 1632, 952) Then ;es hat sich etwas geändert -> handle
        MouseClick("right", 1124, 944) ;Rechtsklick auf neue Nachricht
        Sleep (1000)
        MouseClick("left", 1218, 787)  ;Copy Text auswählen
        Sleep (1000)
        MouseClick("left", 971, 202)  ; Zielgruppe gruppeauswählen
        Sleep (1000)
        MouseClick("right", 1174, 989)  ; Rechtsklick in Textfeld
        Sleep (1000)
        MouseClick("left", 1266, 846)  ;Einfügen auswählen
        Sleep (1000)
        MouseClick("left", 1655, 984)  ;Senden klicken
        Sleep (1000)
        MouseClick("left", 973, 140)  ; Originalegruppe auswählen
        
        $iCheckSum = PixelChecksum(1120, 936, 1632, 952) ;beschreibe die Variable mit dem aktuellen Wert
        EndIf
    
    
     EndFunc
    
    While 1
       If $go = 1 Then
          _search()
       Else
          Sleep(10)
       EndIf
    WEnd
    Alles anzeigen

    Ich habe jetzt die Variable zunächst außerhalb der _search-Funktion definiert und schreibe nach jedem Klick-Durchlauf den aktuellen Wert der PixelChecksum hinein. Und erst wenn dieser Wert ungleich zur aktuellen Summe ist, wird die _search wieder ausgeführt.

    Das ist jetzt nicht ganz dein Weg bzgl. Debugging, aber in meinem Kopf funktioniert es ;)

    VG Bucardo (und danke für die Unterstützung! V.a. Yjuq)

    Nachtrag: Leider funktioniert es nicht im Skript. Jetzt brauche ich doch einen Schubs in die richtige Richtung :-|

  • Endlosschleife bei PixelChecksum

    • Bucardo
    • 9. Oktober 2019 um 20:02

    Ich versuche es mal anders: ;)

    1. Das Skript wird gestartet

    2. Die aktuelle Nachricht steht im Chat

    3. iChecksum wird beschrieben (XXX)

    4. Das Programm wartet

    5. Eine neue Nachricht trifft ein

    6. Die aktuelle Checksum ist /= iChecksum

    7. Die Klicks werden ausgeführt

    8. iChecksum wird neu definiert


    ABER jetzt ist iChecksum = der aktuellen Checksum =>> Endlosschleife bis eine neue Nachricht eintrifft...


    Das müsste es doch sein, oder?

  • Endlosschleife bei PixelChecksum

    • Bucardo
    • 9. Oktober 2019 um 15:54

    Aus Ermangelung einer vernünftigen Internetverbindung auf der Arbeit, habe ich es per Hand versucht:

    C4F3F0D4-E3C1-40AA-94FB-8BD0082497A2.jpeg

    Ich vermute es liegt an der Variablendefinition von $iChecksum?

  • Endlosschleife bei PixelChecksum

    • Bucardo
    • 9. Oktober 2019 um 15:35

    Challenge accepted ?


    Ich suche noch eine Möglichkeit mir den Zustand des Skriptes (aktiv/pause) grafisch anzeigen zu lassen. Gibt es so etwas wie eine kleine Statusleiste oder eine andere Grafik dafür?


    VG

  • Endlosschleife bei PixelChecksum

    • Bucardo
    • 9. Oktober 2019 um 11:12

    Danke für den Link. Das klingt deutlich komplexer für mich, da ich mich wie gesagt noch im absoluten Anfängerbereich bewege. Zumal ich für Telepot (von der Arbeit aus) keine wirklichen Anfängervideos / Tutorials finden konnte...

  • Endlosschleife bei PixelChecksum

    • Bucardo
    • 9. Oktober 2019 um 05:24

    Hallo zusammen,

    ich bin neu hier im Forum.

    Als Autodidakt im Bereich Programmiersprachen lese ich zwar schon länger mit, möchte jetzt aber meine erste Frage stellen:

    Ich habe mir mittels der Funktion PixelChecksum ein SKript geschrieben, welches einen Telegram-Chat auf eingehende Nachrichten überwacht und jede neue Nachricht kopiert und an einen zweiten account weiterleitet. Dies ist ein reines Übungsscript und dient zunächst einmal nur dem Erlernen grundsätzlicher Funktionen.


    Folgende Situation liegt vor:

    Telegram.jpg

    Das Programm scannt den unteren Bildbereich auf Veränderungen und führt dann eine bestimmte Klickfolge durch, um den Text zu kopieren und anschließend weiter zu leiten.

    Bei einem ersten Probelauf habe ich jedoch festgestellt, dass sich das Programm in eine Endlosschleife begibt und durchgehend Nachrichten verschickt. Bei jeder neuen Nachricht ändert sich zwar der Text, die ENdlosschleife bleibt jedoch. Leider habe ich wohl ein Brett vor dem Kopf und finde den Fehler (die Endloschleife) nicht. Deshalb hoffe ich auf eure fundierte UNterstützung :)

    Code
    HotKeySet ("1","_start")
    HotKeySet ("2","_pause")
    HotKeySet ("3","_exit")
    
    Global $go = 0
    
    Func _start()
    $go = 1
    EndFunc
    
    Func _pause()
    $go = 0
    EndFunc
    
    Func _exit()
    Exit
    EndFunc
    
    
    Func _search()
    Local $iCheckSum = PixelChecksum(1120, 936, 1632, 952)
    
    
    While $iCheckSum = PixelChecksum(1120, 936, 1632, 952)
    Sleep(1000)
    WEnd
    MouseClick("right", 1124, 944) ;Rechtsklick auf neue Nachricht
    Sleep (1000)
    MouseClick("left", 1218, 787)  ;Copy Text auswählen
    Sleep (1000)
    MouseClick("left", 971, 202)  ; Ziel-Gruppe auswählen
    Sleep (1000)
    MouseClick("right", 1174, 989)  ; Rechtsklick in Textfeld
    Sleep (1000)
    MouseClick("left", 1266, 846)  ;Einfügen auswählen
    Sleep (1000)
    MouseClick("left", 1655, 984)  ;Senden klicken
    Sleep (1000)
    MouseClick("left", 973, 140)  ; Original-Chat auswählen
    
    
    
    EndFunc
    
    While 1
    If $go = 1 Then
    _search()
    Else
    Sleep(10)
    EndIf
    WEnd
    
    Danke & Gruß Bucardo
    Alles anzeigen

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™