Autoit If-Bedingung True Then Pixelsearch

...komplette Frage anzeigen

2 Antworten

Leider keine Erfahrung mit AutoIt :(

Mir ist nur dein GoTo-Wunsch aufgefallen. Harte Srpünge sind in Programmen wirklich Mist. Glaub mir's bitte. Arbeite mit Prozeduren oder Unterroutinen, sofern dieses Tool das kann.
Selbst das Basic auf dem Commodore 128 bekam schon ein GOSUB spendiert, weil GOTO Ka'c'k'e ist ^^

Just my 2 cents

OK, die Verlinkung zur vorherigen Fragenversion sollten wir noch einsetzen... http://www.gutefrage.net/frage/quelltext-ist-das-richtig

(Wir hatten ja schon fleißig an der Verständigung über die Zielfunktion gearbeitet...)

============

Ich habe mir mal den Spaß gemacht, mit neben mein AutoHotkey (welches ich gewohnt bin) das AutoIt zu legen. Die sind ja beide weitgehend gleich (wenn Du Dir die Geschichte ansiehst: Sind beide aus der gleichen Ursprungsversion entstanden). Da schadet es ja auch nichts, wenn ich mir mal die Alternative etwas genauer ansehe...

Dazu habe ich eine kleine Webseite mit Testcases gebastelt...

http://harryboeck.dyndns.org/Experimente/GuteFrageNet/Tingares-AutoIt/

Dann das Script daneben gelegt und mal laufen lassen...

Was sofort auffiel - und was wir bei der letzten Frageversion schon besprochen hatten: So wie es noch immer formuliert ist, hat die Schachtelung keine Wirkung. Du läßt an zentralen Stellen Dein PixelSearch laufen. Dessen Ergebnis versuchst Du dann, in einer if-Schachtelung auszuwerten, ohne daß sich der Gegenstand des geschachtelten ifs von dem des äußeren ifs unterscheiden könnte.

Egal, wie das ganze auch sonst gemeint sein könnte: SO GEHT DAS NICHT. Definitiv.

Was ich vermute, ist: Du willst dort, wo Du die innere Schachtelung hast, eine weitere Ebene von Endlosschleife einlegen.

Dort, wo das innere "Sleep(1500)" steht, willst Du um das MouseClick, Sleep und das innere if eine While-Schleife packen.

Und vor dem if willst Du ein weiteres PixelSearch machen.

Wetten daß?!

Ich hab das Script mal so umgeschrieben, wie es meiner Meinung nach gemeint sein dürfte...

0
@WhiteGandalf

Noch eine kleine Anmerkung: Generell ist es ungemein hilfreich, wenn man sich als angehender Programmierer darin übt, das, was man will, VERSTÄNDLICH (nicht bloß mit wische-waschi lapidarem Gefasel, wo man sich nicht wirklich Mühe gibt) und beweisbar korrekt mit normaler Umgangssprache darzulegen.

Solange man das mit normaler Umgangssprache nicht schafft, ist an eine Programmiererlaufbahn eh nicht zu denken.

Aber auch, wenn man das Programmieren nur mal so nebenbei zum Spaß macht, hilft es, zuerst das Problem umgangssprachlich formuliert zu kriegen.

0
@WhiteGandalf

Ja ^^, sag das mal meinen müden ich, was um nach 40 Stunden (pi mal daumen) noch versucht eine lösung für ein absolut nervendes Problem zu suchen ^^.

Mfg Tingares

0
@WhiteGandalf

Cool!! Der Script ist wirklich genial! Ich denke mal, das er funktionieren wird...ich probiere es gleich mal aus... aber könntest du mir noch mal so ein paar Einzelheiten erklären?

Den Großteil verstehe ich, nur das mit den If-Bedingungen nicht ganz. Teilweise kenne ich die Befehle nicht: -"if not IsArray ($varialbe) Then -"else"

Ah doch ich glaube ich verstehe mehr...aber eine vollständige Erklärung würde mir natürlich unglaublich helfen (vor allem für die zukunft...wenn ich mal wieder auf so etwas treffe (was ich garantiert tue ^^))

Würde mich also echt über eine Erklärung wie das Script funktioniert, bezüglich der If-Bedingungen, interessieren.

Ich schaue auch mal selbst, wie das Script geht, für den Notfall.

Teste jetzt erstmal ob es funktioniert.

Mfg Tingares

0
@Tingares

Beim AutoIt ist - genau wie beim AutoHotkey - eine "Hilfe" mit dabei. Beim AutoIt heißt die Exe dazu "AutoIt3Help.exe".

Da wirst Du eventuell auf den ERSTEN Blick erschlagen, aber die Hilfe ist recht systematisch (und ähnelt sich zudem stark zwischen AutoIt und AutoHotkey). Wenn Du Dich erstmal reingelesen hast, findest Du alle Themen auf Anhieb.

Die Programmkonstrukte sind unter "Language Reference" zu finden. Das "if-then-else" unter "Conditional Statements".

0
@WhiteGandalf

okay....bin verwirrt. aber will jetzt erstmal testen warum es nicht ganz geht...mhhhh. habe jetzt im prinzip deine lösung statt meine eingesetzt und sollte, wenn ich mal grade zeit finde ^^, schauen warum es nicht klappt...

Mfg Tingares

0
@WhiteGandalf

für was steht bei $variable = PixelSearch (0,0,500,400, 0...00, 0, 1) Die 0, und die 1 (also die letzten beiden Zahlen) am Schluss? Ich kenne nur die normale Form..

Mfg Tingares

0
@Tingares

Ja, was war das?.... Da sollte hinten das Handle des Fensters rein, weil ich ungern kreuz und quer auf dem Bildschirm herumfurwerken lasse. Und wenn man einen weiter hinten in der Parameterliste stehenden optionalen Parameter angeben will, muß man die vorher in der Liste kommenden Parameter auch angeben. Wobei: Es KÖNNTE sein, daß AutoIt gestattet, die Parameter dazwischen einfach wegzulassen, indem man Kommas ohne Füllung nebeneinandersetzt. Aber soweit wollte ich jetzt nicht herumspielen...

Und wenn es bei Dir nicht funktioniert (die gegnerischen Kreise nicht angeklickt werden von der Maus), dann könnte das mit Bildschirmpositinen zusammenhängen: Ich stelle meinen Firefox durch Drücken von F11 auf Vollbild und damit klappt's hier. Und weil ich den mit reduziertem User Interface betreibe, funktioniert's auch noch mit Fenstermodus. Wenn Du irgendwelche Toolbars im Browser aktiviert hast, wird's wohl schon wieder nicht gehen. Weil die anderen Pixelsearches erstmal noch global suchen - also am Gesmatdesktop orientiert. Ich hatte ide Änderung nicht durchgezogen.

Und selbst wenn die Operationen und Koordinatenrechnungen auf das Browserfenster beschränkt werden, gelten Menübalken und Toolbars beim Browser wohl als innere Fensterfläche.

Das macht aber alles nichts, weil Dein Script ja nicht im Browser funktionieren soll, sondern auf einer anderen Programmoberfläche... Oder?!?

0
@WhiteGandalf

Hey, erstmal danke das du mir mal wieder geholfen hast :), ohne dich wäre ich erst garnicht so weit gekommen, ich habe wirklich das gefühl, dass es schaffbar ist!

Hier noch mal zwei Fragen die zum Quelltext gehören: Kann ich die erste Zeile, also das hier : $win = WinWaitActive("Gute-Frage-Experimente / AutoIt testcases") weglassen?, oder für was steht das?

Und könnte ich den Textdialog abändern? Ja oder?

Mfg Tingares

0
@Tingares

Das WinWait läßt das Script warten, bis ich den Browser mit der Testseite nach vorn gebracht habe.

Bei globalen Hotkey-Scripten mache ich das immer so: Es wäre fatal, wenn Hotkey-Sequenzen beim falschen Programm loslegen. Und wenn man mit der Maus herumklickt, sollte da schon mit Sicherheit das richtige Programm liegen statt zum Beispiel ein Dateimanager mit einem Menüeintrag zum Löschen aller Dateien geöfnet sein. Um mal was extremes schreiend an den Haaren herbeizuschleifen...

Ansonsten sind die Messageboxen nur zum Prüfen, ob das Script auch wirklich dorthin kommt. Es ist exakt Dein Original-Programm, nur mit den inneren Bereichen leicht umgestellt und um innere Schleifen ergänzt.

Man könnte das ganze auch noch ganz anders aufziehen. Beim Programmieren hast Du buchstäblich unendlich viel Spielraum. Sieh es locker und experimentiere weiter damit herum! Und wirf immer mal wieder einen Blick in die Dokumentation alias Hilfe!

0

Juhu! Endlich eine Antwort von dir! Habe mich schon gefragt, was da los ist, da ich das ganze echt dringend brauche.... na ja ich bin einfach aufgeschmissen, weil ich nicht weiß wie ich das Problem lösen soll....ist halt irgendwie verstrickt...

Ich klick mich mal grade durch alle deine Lösungen durch und gebe dann Feedback oder bedanke mich je nach dem.

Übrigens coole Idee mit den Testcases ^^.

Mfg Tingares

0
@Tingares

Ja, es passiert immer wieder mal, daß eine Frage "aus dem Fokus gerät": Wenn ich keine Idee mehr sofort parat habe, lasse ich ne Frage erstmal im Hintergrund liegen. Kommt mir dann bis zum Sitzungsende noch immer keine Idee, ist die Frage erstmal mit dem Schließen des Browsers / Abmelden am Computer weg.

Normalerweise meldet sich dann irgendwer anderes mit ner Idee, woraufhin ich wieder ne Mail-Benachrichtigung kriege und wieder aufmerksam werde. Aber manche Fragen sind halt aufwendig zu beantworten, wo sich auch sonst keiner rantraut. Sowas geht dann mitunter unter.

Bei sowas hilft es natürlich auch, wenn der Fragesteller einfach nochmal ein "bump" macht - also nach ner Weile ne Anmerkung unter einen der Beiträge hängt. Dann laufen wieder Emails bei allen Leuten ein, die sich an der Frage soweit beteiligt hatten.

0
@WhiteGandalf

Ja, bin grade am testen und geht nicht ganz, aber ich schau grade mal so ein bisschen.

0
@WhiteGandalf

Hast du mal eine Lösung für mich?

Also ich habe ja jetzt wie schon gesagt, den Quelltext von dir eingesetzt. Bis zu dem eingesetzten Quelltext geht dann alles, doch danach ist alles still.

Es kommt weder die erste Nachricht mit dem Messager noch sonst irgendeine Aktion. Bin grade am überlegen und werde gleich mal dein "Teststudio" ausprobieren (also das, in welchem du es immer getestet hast)

Noch eine Frage, ist der Quelltext, denn du geschrieben hast für AutoHotkey oder für Autoit?

Eigentlich sind ja beide recht ähnlich, doch vielleicht liegt es am Ende ja doch daran...

Mfg Tingares

0

Ist das auf dieser Seite jetzt ein Code zum benutzen oder nur die Html-Sprache um es anschaulich darzustellen?

Bin grade etwas verwirrt...

Mfg Tingares

0

Weißt du wie man die angehängte .auto datei öffnet. Beim Webdienst habe ich nichts gefunden und mit autoit zu öffnen draue ich mich nicht, sonst schreibt der die am ende noch um...mom ich machs einfach...achso, geht ja garnicht, oder ich wüsste nicht wie, da ich nicht die autoit.exe habe....

Mhhh ^^, könntest du mir helfen??

Mfg Tingares

0
@Tingares

Ah habs hinbekommen, habs einfach in .au3 umbenannt und ging!

Danke, schaue es jetzt an...

Mfg Tingares

1

Ja so meine ich das auch. Ich will einfach das es geht und das es funktioniert, setzte mich jetzt gleich mal genauer dran....ich probiere auch gleich mal das Programm AutoHotkey aus...

Mfg Tingares

0

Ah ich muss schon sagen, dass autohotkey echt cool ist, alle funktion die autoit auch hat. nur finde ich es als Anfänger etwas unübersichtlich....teste noch ein bisschen

Mfg Tingares

0
@Tingares

Du schreibst schneller als ich reden kann!

Das Autoit-Progrämmchen muß Du doch "speichern" können, oder? Sag dem Browser einfach "speichern unter", dann macht der das auch!

Und überschreiben soll das Dein Programm eigentlich nicht: Ich hab eine unübliche Endung genommen.

Und die HTML-Seite ist nur zum Testen des Scripts da: Je nachdem, welchen Teil man oben links im Browserfenster hat, sollte das Script mal so und mal so reagieren.

0
@WhiteGandalf

ah okay sehr interessant, ja jetzt verstehe ich, ja bei mir ist der test ähnlich :D!

0
@Tingares

Nur um das mal klar zustellen (Stand etwas weiter oben):

Es wurde gesagt, AutoIt V3 und AutoHotKey hätten die gleichen 'Quellen'. Das stimmt insofern, dass beide von AutoIt V2 abstammen.

Für weitere Fragen zu AutoIt gibt es auch 2 deutsche Foren (autoit.de & codebot.de), die sich viel mit AutoIt befassen, und außerdem eine deutsche Übersetzung der Hilfedatei (auf AutoIt.de zu finden).

0

Was möchtest Du wissen?