Relativer Mouseclick Befehl

  • [autoit]

    HotKeySet("{ESC}", "Programmbeenden")
    ;~ opt("MouseCoordMode",0)
    sleep(3000)
    while 1

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

    MouseClick("left", 500,500)
    MouseMove ( 100,0)
    sleep(5300)
    WEnd
    Func Programmbeenden()
    Exit

    [/autoit]

    das da oben ist blödsinn, habe mich bisschen rumgespielt. Und zwar habe ich früher immer mit fixen Mauskordinaten gearbeitet.... das war aber sehr aufwendig und ich würde jetzt gern mit einer Funktion arbeiten die die Maus von ihrem Standpunkt z.b 100 pixel nach rechts verschiebt...

    [autoit]

    Mousemove(500,500)
    MeingewünterMausbefehl(100,0)

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

    ;Maus steht jetzt an der Kord ( 600,500)

    [/autoit]

    habe mir überlegt die aktuelle Position immer zu speichern und werte dazuaddieren... würde vielleicht auch gehen, vielleicht übersehe ich aber einen Befehl der mir eben das Leben viel leichter macht

  • [autoit]


    ;Beispiel:
    ;Maus um 100 Pixel nach rechts verschieben:
    _MouseMoveRel(100,0)
    ;Maus 20 Pixel nach oben verschieben, langsam:
    _MouseMoveRel(0,-20,100)

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

    Func _MouseMoveRel($x,$y,$speed=0)
    ;L3viathan2142
    If $speed <0 Or $speed > 100 Then Return SetError(1)
    MouseMove(MouseGetPos(0)+$x,MouseGetPos(1)+$y,Round($speed))
    EndFunc

    [/autoit]


    etwa so?

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • grrrrrrrrrr

    ich könnte dich schlitzen ^^ Spass, danke für deine Arbeit, das ist genau der Befehl den ich gesucht habe den du mal gleich als Funktion geschrieben hast..
    habe das Problem selber viel unelleganter lösen können mit MouseGetPos(). Speicher praktisch immer ab wo die Maus ist und addiere zu diesen Kordinaten dann dazu... mit deiner Funktion wird das alles viel schlanker werden... danke

    [autoit]

    while $i <= 3
    send(2)
    sleep(500)
    MouseClick("right")
    sleep(4500)
    send(2)
    $pos = MouseGetPos()
    MouseClick("right", $pos[0] + 60 ,$pos[1])
    $pos = MouseGetPos()
    sleep(4500)
    send(2)
    MouseClick("right", $pos[0] + 60 ,$pos[1])
    $pos = MouseGetPos()
    sleep(4500)
    send(2)
    MouseClick("right", $pos[0] +60 ,$pos[1])
    $pos = MouseGetPos()
    sleep(4500)
    send(2)
    MouseClick("right", $pos[0] - 180 ,$pos[1] + 60)
    $i = $i + 1
    WEnd

    [/autoit]

    edit:

    also die Funktion macht alles sehr viel übersichtlicher. Ich mag sie ;) . Leider kann sie keinen Mausklick ausführen... habe mich bisi gespielt einen weiteren Übergabeparamter einzufügen aber da ist Ende von einem kleinem Schmalspur Programmierer wie mich...

    [autoit]

    Func _MouseMoveRel($x,$y,$speed=0)

    If $speed <0 Or $speed > 100 Then Return SetError(1)
    MouseMove(MouseGetPos(0)+$x,MouseGetPos(1)+$y,Round($speed))
    EndFunc

    [/autoit]


    Also die Funktion würde dann so aufgerufen werden

    [autoit]

    _mousemoverel("right",100,100,1)

    [/autoit]

    oder auch

    [autoit]

    _mousemoverel("left",100,100,1)

    [/autoit]

    wie müsste ich die Funktion dann umschreiben ?

    Einmal editiert, zuletzt von Bullz (3. Oktober 2009 um 04:34)

  • [autoit]

    _MouseClickRel("right",100,50,5)
    _MouseClickRel("left",200,200,20)

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

    Func _MouseClickRel($button,$x,$y,$speed=0)
    If $speed <0 Or $speed > 100 Then Return SetError(1)
    MouseClick($button, MouseGetPos(0)+$x,MouseGetPos(1)+$y,Round($speed))
    EndFunc

    [/autoit]

    MfG xXTobi93Xx