Script wertet nur erste If-Abfrage von insgesamt zwei If-Abfragen aus

  • Hallo!

    Ich will gerne ein Scrip haben, das für mich auf 2 Mausklicks wartet. Nach jedem Klick soll er die Mouseposition usw. speichern. Das Speichern der Mausposition ist ja kein Problem. Mein Problem besteht darin, dass der Script nur die erste If-Abfrage auswertet und zu der zweiten garnicht springt. Seit einigen Tagen beschäftige ich mich mit autoit und bisher hatte ich keine Probleme. Ich wollte das mit den Mausklicks in java realisieren, aber in java ist es viel viel komplexer, deshalb wollte ich es mit autoit lösen.


    [autoit]

    If _IsPressed("01", $dll) And $x = 0 And (_IsPressed("A2", $dll) Or _IsPressed("A3", $dll)) Then
    MsgBox(64,"test","Klick 1")
    ExitLoop
    $x = 1
    EndIf
    Sleep(100)



    If _IsPressed("01", $dll) And (_IsPressed("A2", $dll) Or _IsPressed("A3", $dll)) Then
    MsgBox(64,"test","Klick 2")
    ExitLoop
    EndIf
    Sleep(100)

    [/autoit]

    Einmal editiert, zuletzt von monzterhun (26. Dezember 2010 um 03:04)

  • Hallo monzterhun,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deinem Probelm: der Skripteil den du gepostet hast funktioniert auch wenn du unnsingerweise ohne eine Schleife ExitLoop verwendest.

    Zitat von Zitat Hilfe

    ExitLoop
    --------------------------------------------------------------------------------

    Beendet eine While-, Do- oder For-Schleife.

    oder hast du uns nicht den komplette Code gepostet?

    mfg autoBert

  • hi
    neee, das war der ganze quellcode.
    aber auch ohne exitloop wird die zweite if-abffrage nicht ausgewertet.
    hast du meinen code bei dir getestet? vllt. liegt es ja an meiner autoit version oder so, weil es ist für mich anhand des quellcodes nicht erkennbar, wieso es nicht funktioniert.

  • Zitat

    neee, das war der ganze quellcode.


    Das kann alleine schon deswegen nicht stimmen weil das #include <Misc.au3>, welches zur korrekten Funktionalität des Scriptes notwendig ist, fehlt. :rolleyes:
    In diesem Codeschnipsel kann ich kein wirkliches Problem erkennen... Und da ich keine Glaskugel für Wahrsager wie AutoBert habe und seine gerade vermutlich wieder einmal in Reparatur ist bräuchten wir schon einen vollständigen Code...

  • hast du meinen code bei dir getestet?


    Nein, sonst hätte ich ja bemerkt, dass das Skript nicht laufen kann, denn

    • das fehlen von #include <Misc.au3> erzeugt Fehler
    • ExitLoop ohne Schleife ist nicht nur unsinnig, sondern schädlich auch Fehler
    • die variablen $dll und $x verwendest du ohne sie deklariert zu haben ergibt auch Fehler

    wenn ich auf meine Vermutung, dass es sich nicht um den kompletten Quellcode handelt dies:

    hi
    neee, das war der ganze quellcode.

    als Antwort bekomme, komme ich zu dem Schluss du willst uns hier verscheissern und hast nur die Codeteile entfernt die vielleicht einem aktivieren (siehe Forenregeln) entgegenstehen,

    @All bitte nicht supporten bis TE Skript eingestellt hat, danke

    mfg autoBert

  • hi
    nein, das war der ganze code. ich habe nur vergessen die die ersten zwei zeilen zu kopieren. sonst ist es der komplette code. ich hätte keinen grund euch anzulügen. ihr könnt meinen code probieren. das problem bei mir ist, dass er die zweite if abfrage nicht auswertet. das ist mein problem.

    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    AutoIt Version: 3.3.6.0
    Author: myName

    [/autoit][autoit][/autoit][autoit]

    Script Function:
    Template AutoIt script.

    [/autoit][autoit][/autoit][autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    ; Script Start - Add your code below here

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    #Include <Misc.au3>
    $dll = DllOpen("user32.dll")

    [/autoit][autoit][/autoit][autoit]

    $x = 0


    If _IsPressed("01", $dll) And $x = 0 And (_IsPressed("A2", $dll) Or _IsPressed("A3", $dll)) Then
    MsgBox(64,"test","klick 1")
    ExitLoop
    $x = 1
    EndIf
    Sleep(100)


    If _IsPressed("01", $dll) And (_IsPressed("A2", $dll) Or _IsPressed("A3", $dll)) Then
    MsgBox(64,"test","klick 2")
    ExitLoop
    EndIf
    Sleep(100)

    [/autoit]
  • Dein Code macht für mich wenig Sinn... Eine If Abfrage wartet nicht bis ihre Bedingung erfüllt wurde. Eine EndlosSchleife macht da mehr Sinn ;).
    Das hier wäre eine Möglichkeit... Wobei ich nicht verstehe wozu du die Variable $x brauchst.

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $dll = DllOpen("user32.dll")
    $x = 0

    [/autoit] [autoit][/autoit] [autoit]

    While Sleep(20)
    If _IsPressed("01", $dll) And $x = 0 And (_IsPressed("A2", $dll) Or _IsPressed("A3", $dll)) Then
    MsgBox(64, "test", "klick 1")
    $x = 1 ; Was genau bringt diese Variable?
    ExitLoop
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    While Sleep(20)
    If _IsPressed("01", $dll) And (_IsPressed("A2", $dll) Or _IsPressed("A3", $dll)) Then
    MsgBox(64, "test", "klick 2")
    ExitLoop
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    DllClose($dll)

    [/autoit]


    Für mich sieht es allerdings so aus, als hättest du etwas ähnliches bereits versucht und dann wieder entfernt :huh: .

  • danke für deine hilfe.
    ja, ich habe wirklich viel rumprobiert. aber mein geposteter script war wirklich vollständig.
    diese variable hatte ich beim probieren eingesetzt. die 2 abfragen waren in einer schleife drinne und die variable sollte dazu dienen, dass wenn z.b. die zweite abfrage erledigt war, dass dann das programm zur ersten springt. leider hatte es mir auch nicht geholfen, sodass ich es wieder rausgenommen hatte(leider unvollständig).
    ich möchte dir wirklich nochmal danken. es klappt jetzt alles.

  • Hallo monzterhun,

    schön, dann ist dein Problem ja gelöst, schön wäre es allerdings auch wenn du den Thread auf gelöst setzt. Einfach 1. Beitrag bearbeiten, Präfix (nähe Überschrift) ändern und speichern (absenden)

    mfg autoBert