Mausgeschwindigkeit erhöhen?

  • Hallöchen.

    Habe eine kurze Frage:
    Lässt sich die Mausgeschwindigkeit noch etwas erhöhen?
    Mousemove(x, y, 0) ist mir zu langsam :D
    Und die Systemeinstellung nimmt ja leider keinen Einfluss darauf ;)
    Mir kommt das so lange vor ^^

    Liebe Grüße
    Elodie

    Einmal editiert, zuletzt von Elodie (21. Juni 2009 um 21:16)

  • Hi
    ja
    einfach
    sleep einfügen
    also
    z.b:

    [autoit]

    mousemove( 445, 567 )
    sleep(6000)

    [/autoit]

    1000 = 1 sec

  • http://www.autoit.de/dokumentation_…s/MouseMove.htm

    MouseMove (x, y [, speed] )
    x The screen x coordinate to move the mouse to.
    y The screen y coordinate to move the mouse to.
    speed [optional] the speed to move the mouse in the range 1 (fastest) to 100 (slowest). A speed of 0 will move the mouse instantly. Default speed is 10.

    MfG xXTobi93Xx

  • Hallo

    Ja, das ist mir klar.
    Aber wenn man nun das Skript weiter unten ausführt, merkt man, dass die Maus sehr langsam ist. Wenn man nämlich bei Systemsteuerung die Mausgeschwindigkeit ganz hoch setzt und die Maus dann per Hand so bewegt, wie mein Skript das macht, dann ist man per Hand zwar unpräziser, aber meiner Meinung nach schneller.
    Kann das auch an Autoit liegen? Dass Autoit das Skript nicht schnell genug macht?

    [autoit]


    $x = 0
    $y = 0

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

    while(true)
    mousemove($x, $y, 0)
    if $x >= @DesktopWidth then
    $x = 0
    $y = $y+1
    Endif
    $x = $x+1

    if $y = @desktopheight/4 then
    mousemove(@desktopwidth/2, @desktopheight/2,0)
    exit
    endif
    Wend

    [/autoit]

    Liebe Grüße
    Elodie

  • Ganz einfach so:

    mousemove($x,$y,1)

    wenns dir dann noch zu langsam is weis ich auch nicht

    Mfg

    Computers are like Airconditioning. They don´t work with open Windows.

  • das Skript sollte nur verdeutlichen, was ich meine ;) Mir war es nur durch dieses Skript aufgefallen und da hatte ich mich nur aus Interesse gefragt, woran das liegen könnte. Schließlich steht ja in der Autoit Hilfe schon drin, dass die Maus durch Mausgeschwindigkeit 0 sofort da sein sollte. So dachte ich ganz einfach, dass theoretisch die Maus auch sofort an dem letzten Pixel, bevor mein Skript beendet wird, sein sollte. :)

  • Bei mir Funkt das mit 0 aber meistens nicht so richtig, deswegen verwnde ich lieber 1, und so viel Unterschied is ja dann auch nicht mehr dazu

    Mfg

    Computers are like Airconditioning. They don´t work with open Windows.

  • in der hilfe steht:
    -------------------------------------------------------------
    speed [optional] the speed to move the mouse in the range 1 (fastest) to 100 (slowest). A speed of 0 will move the mouse instantly. Default speed is 10.
    -------------------------------------------------------------

    100 ist langsam ind 1 ist schnell.

    Die 0 ist also Default und ich habe das Gefühl die Geschwindigkeit variiert dabei. Am Anfang bewegt sie sich schnell und je näher sie zum "zielpunkt" kommt desto langsamer wird sie.

    ich habe dazu aber auch noch eine frage:

    ich habe ein Script das MouseMove(700, 700, 2) benutzt. jetzt ist mousespeed 2 (MouseMove(700, 700, 2))aber zu langsam und 1 (MouseMove(700, 700, 1))zu schnell. mit 2.3 oder 2.7 gehts auch nicht. hat jemand eine idee?

  • Hi Fischi84,
    die Lösung die ich mir ausgedacht habe (und die zu funktionieren scheint)
    basiert auf der Berechnung von "Zwischenpunkten" zwischen den Koordinaten
    des Start- und des Zielpunktes. Diese Zwischenpunkte werden nun nacheinander
    mit einem kleinen Sleep() anvisiert und können somit die Mausgeschwindigkeit beeinflussen.
    (Mehr Zwischenpunkte und/oder größere Sleepzeit = Langsamere Mausbewegung)

    Ich habe 2 Beispiele (1. ist zur Erklärung - 2. ist zur Problemlösung) mit denen du gerne
    experimentieren kannst!
    Falls Fragen aufkommen, hoffe ich sie beantworten zu können (bin recht bald unterwegs -> off)
    oder, dass jemand aus dem Forum sie klären kann :)

    Den Quellcode möchte ich nun nach all dem "Gefasel" nicht vorenthalten :D

    Spoiler anzeigen
    [autoit]

    #cs
    P(a,b)
    S(c,d)

    ^PS = (c-a, d-b) ;PS ist der Richtungsvektor von der Geraden die zwischen P und S liegt!

    Gerade = ^PS * x + P ; x ist der Faktor (bei 1/2 ist es genau die Hälfte zwischen den Punkten P und S)!

    Fehlerbehandlung ist nicht implementiert, da es sonst zu unübersichtlich werden würde!

    by XovoxKingdom :)
    #ce

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

    Func GetPoint($a, $b)
    Dim $c[2]
    $c[0] = $b[0] - $a[0]
    $c[1] = $b[1] - $a[1]
    Return $c
    EndFunc ;==>GetPoint

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

    Func Beispiel1();Anlehnung an Formel (oben)

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

    Dim $P[2];Punkt P
    Dim $S[2];Punkt S

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

    Dim $Q[2]; Punkt der Berechnung (liegt im Beispiel genau in der Hälfte - also zwischen P und S)

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

    $P[0] = 0;Initialisierung von dem Punkt P
    $P[1] = 0

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

    $S[0] = 100;Initialisierung von dem Punkt S
    $S[1] = 100

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

    $PS = GetPoint($P, $S);In PS wird der Richtungsvektor gespeichert

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

    $Q[0] = $PS[0] / 2 + $P[0];Dem Punkt Q (zwischen P und S) wird nun ein Wert zugewiesen
    $Q[1] = $PS[1] / 2 + $P[1];Die /2 sorgt für die Hälfte der Distanz zwischen P und S

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

    MouseMove($P[0], $P[1])
    MsgBox(0, "Position", MouseGetPos(0) & ", " & MouseGetPos(1), 1);Punkt P sollte angezeigt werden

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

    Sleep(500)

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

    MouseMove($S[0], $S[1])
    MsgBox(0, "Position", MouseGetPos(0) & ", " & MouseGetPos(1), 1);Punkt S sollte angezeigt werden

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

    Sleep(500)

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

    MouseMove($Q[0], $Q[1])
    MsgBox(0, "Position", MouseGetPos(0) & ", " & MouseGetPos(1), 1);Der Punkt zwischen P und S sollte angezeigt werden (Punkt Q)

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

    EndFunc ;==>Beispiel1

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

    ;:::Anwendungsbeispiel::::
    Func Beispiel2()
    Dim $x[2], $y[2], $z[2]
    $max = 30;je höher der Wert, desto öfter wird die Maus bewegt -> langsamer

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

    $x[0] = 100
    $x[1] = 100

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

    $y[0] = 200
    $y[1] = 500

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

    $w = GetPoint($x, $y)

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

    For $i = 1 To $max
    $z[0] = $w[0] / $max * $i + $x[0]
    $z[1] = $w[1] / $max * $i + $x[1]
    MouseMove(Round($z[0], 0), Round($z[1], 0), 1)
    Sleep(15); Diese Zeit kannst du beliebig anpassen
    Next
    EndFunc ;==>Beispiel2

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

    MsgBox(0, "Beispiel 1", "Beispiel 1 beginnt nun!", 2)
    Sleep(1000)
    Beispiel1()
    MsgBox(0, "Beispiel 1", "Beispiel 1 ist nun abgeschlossen!", 2)

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

    Sleep(2000)

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

    MsgBox(0, "Beispiel 2", "Beispiel 2 beginnt nun!", 2)
    Sleep(1000)
    Beispiel2()
    MsgBox(0, "Beispiel 2", "Beispiel 2 ist nun abgeschlossen!", 2)

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!