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!
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!
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.
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.
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
Ich meine es heute Nacht während des Beruhigens unseres Nachwuchses gelöst zu haben:
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 :-|
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?
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
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...
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:
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
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