MouseUp funzt nicht

  • Als erstes der Code:

    Spoiler anzeigen
    [autoit]


    #include <misc.au3>

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

    HotKeySet("!a", "_start")
    HotKeySet("!e", "_exit")
    HotKeySet("!w", "_wiedergabe")
    HotKeySet("!c", "_clear")
    $i = 0
    $lol1 = 0
    $lol2 = 0

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

    Func _start()
    While 1
    $i = $i + 1
    Sleep(10)
    If _IsPressed("01") Then
    IniWrite("cords.ini", "" & $i & "", "mausL", "1")
    $lol1 = "gedrückt"
    Else
    IniWrite("cords.ini", "" & $i & "", "mausL", "0")
    EndIf
    If _IsPressed("02") Then
    IniWrite("cords.ini", "" & $i & "", "mausR", "1")
    $lol2 = "gedrückt"
    Else
    IniWrite("cords.ini", "" & $i & "", "mausR", "0")
    EndIf
    $pos = MouseGetPos()
    IniWrite("cords.ini", "" & $i & "", "pos 0", "" & $pos[0] & "")
    IniWrite("cords.ini", "" & $i & "", "pos 1", "" & $pos[1] & "")
    TrayTip("Hinweis", "X:" & $pos[0] & "Y:" & $pos[1] & " " & @CRLF & "LinkeMausTaste: " & $lol1 & "" & @CRLF & "RechteMausTaste: " & $lol2 & "", 1)
    $lol1 = "nicht gedrückt"
    $lol2 = "nicht gedrückt"
    If _IsPressed("1B") Then
    ToolTip("aufzeichnung beendet")
    $i = 0
    Sleep(2000)
    ExitLoop
    EndIf
    WEnd
    EndFunc ;==>_start

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

    Func _wiedergabe()
    $var = IniReadSectionNames("cords.ini")
    For $i2 = 0 To $var[0] Step +1
    If IniRead("cords.ini", "" & $i2 & "", "mausL", "") = 1 Then
    MouseDown("left")
    ElseIf IniRead("cords.ini", "" & $i2 & "", "mausL", "") = 0 Then
    MouseUp("left")
    EndIf
    If IniRead("cords.ini", "" & $i2 & "", "mausR", "") = 1 Then
    MouseDown("right")
    ElseIf IniRead("cords.ini", "" & $i2 & "", "mausR", "") = 0 Then
    MouseUp("right")
    EndIf
    $pos1 = IniRead("cords.ini", "" & $i2 & "", "pos 0", "")
    $pos2 = IniRead("cords.ini", "" & $i2 & "", "pos 1", "")
    MouseMove($pos1, $pos2, 1)
    Next
    MouseUp("right")
    MouseUp("left")
    ToolTip("Fertsch")
    EndFunc ;==>_wiedergabe

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

    Func _clear()
    FileDelete("cords.ini")
    TrayTip("Hinweis","gelöcht...",2)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

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

    Func _hilfe()
    MsgBox(0,"Hilfe","ALT + A = start" & @CRLF & "ALT + E = Exit" & @CRLF & "AlT + W = Wiedergabe" & @CRLF & "ESC = Ende der Aufzeichnung" & @CRLF &"ALT + C = Löchen der Log-Datei (sollte vor jeden neuen start gemacht werden, falls der alte Log nicht mehr benötigt wird)")
    EndFunc

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

    While 1
    Sleep(100)
    WEnd

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

    So wenn ich z..b. was in Pait male und das aufnehmen :D dan funzt das einwandfrei er logt alles...
    Aber beim wieder abrufen macht es die klicks nicht als hebt die maus wieder an, den es hält permanant die taste gedrückt :/
    Und jedes mal nen klick will ich nicht machen weil... er soll ja die taste gedrückt halten wie er es aufgenommen hat und nicht frei drauf los klicken ^^

    2 Mal editiert, zuletzt von TheLol (28. Juni 2008 um 22:53)

  • Hallo TheLol,

    wenn ich mir den Code ansehe, hab ich das Gefühl dass da einige Klammern fehlen.
    Bring das mal in Ordnung und dann sehen wir weiter ... :D

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • wenn du den sleep(10) rausnimmst erkennt er auch den Click.
    erzeugt halt etwas mehr Daten... :D

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • BugFix
    ???
    also ich hab's ausprobiert und das funzt doch so ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Das lesen funzt einwand frei, und das sleep(10) hat sich irgend wie reingemogelt -> aber es ging trotz dem
    Das Problem ist nur die wiedergabe -> das er die maustaste nicht wieder anhebt

    werde gleich mal BufFix´s variante ausprobieren


    Geht immer noch ned:

    Probierts einfahc mals aus:

    Spoiler anzeigen
    [autoit]

    #include <misc.au3>

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

    HotKeySet("!a", "_start")
    HotKeySet("!e", "_exit")
    HotKeySet("!w", "_wiedergabe")
    HotKeySet("!c", "_clear")
    $i = 0
    $lol1 = 0
    $lol2 = 0

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

    Func _start()
    While 1
    $i = $i + 1
    If _IsPressed("01") Then
    IniWrite("cords.ini", "" & $i & "", "mausL", "1")
    $lol1 = "gedrückt"
    Else
    IniWrite("cords.ini", "" & $i & "", "mausL", "0")
    EndIf
    If _IsPressed("02") Then
    IniWrite("cords.ini", "" & $i & "", "mausR", "1")
    $lol2 = "gedrückt"
    Else
    IniWrite("cords.ini", "" & $i & "", "mausR", "0")
    EndIf
    $pos = MouseGetPos()
    IniWrite("cords.ini", "" &$i& "", "pos 0", "" &$pos[0]& "")
    IniWrite("cords.ini", "" &$i& "", "pos 1", "" &$pos[1]& "")
    $Farbe = PixelGetColor($pos[0],$pos[1])
    IniWrite("cords.ini", "" &$i& "", "Farbe", "" &$Farbe& "")
    TrayTip("Hinweis", "X:" &$pos[0]& "Y:" &$pos[1]& " " &@CRLF& "LinkeMausTaste: " &$lol1& "" &@CRLF& "RechteMausTaste: " &$lol2& "" &@CRLF& "Farbe: "&$Farbe&"", 1)
    $lol1 = "nicht gedrückt"
    $lol2 = "nicht gedrückt"
    If _IsPressed("1B") Then
    ToolTip("aufzeichnung beendet")
    $i = 0
    Sleep(2000)
    ExitLoop
    EndIf
    WEnd
    EndFunc ;==>_start

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

    Func _wiedergabe()
    $var = IniReadSectionNames("cords.ini")
    For $i2 = 0 To $var[0] Step +1
    If IniRead("cords.ini", "" & $var[$i2] & "", "mausL", "") = 1 Then
    MouseDown("left")
    ElseIf IniRead("cords.ini", "" & $var[$i2] & "", "mausL", "") = 0 Then
    MouseUp("left")
    EndIf
    If IniRead("cords.ini", "" & $var[$i2] & "", "mausR", "") = 1 Then
    MouseDown("right")
    ElseIf IniRead("cords.ini", "" & $var[$i2] & "", "mausR", "") = 0 Then
    MouseUp("right")
    EndIf
    $pos1 = IniRead("cords.ini", "" & $var[$i2] & "", "pos 0", "")
    $pos2 = IniRead("cords.ini", "" & $var[$i2] & "", "pos 1", "")
    MouseMove($pos1, $pos2, 1)
    Next
    MouseUp("right")
    MouseUp("left")
    ToolTip("Fertsch")
    EndFunc ;==>_wiedergabe

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

    Func _clear()
    FileDelete("cords.ini")
    TrayTip("Hinweis","gelöcht...",2)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

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

    Func _hilfe()
    MsgBox(0,"Hilfe","ALT + A = start" & @CRLF & "ALT + E = Exit" & @CRLF & "AlT + W = Wiedergabe" & @CRLF & "ESC = Ende der Aufzeichnung" & @CRLF &"ALT + C = Löchen der Log-Datei (sollte vor jeden neuen start gemacht werden, falls der alte Log nicht mehr benötigt wird)")
    EndFunc

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

    While 1
    Sleep(100)
    WEnd

    [/autoit]

    kopiert das script und führt es aus, zeichnet z.b. was in paint (z.b. ganz viele striche) und lasst es euch wiedergeben.... und ihr werdet sehen er hebt die maustaste nicht wieder an -> obwohl im log 0 steht was so viel wie anheben heist

  • Du musst die Downs mitzählen oder zwischenspeichern

    Zitat

    For every MouseDown there should eventually be a corresponding MouseUp event.

    [autoit]

    ;Am Anfang vom Skript:
    Global $LeftDown=False
    Global $RightDown=False

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

    If IniRead("cords.ini", "" & $var[$i2] & "", "mausL", "") = 1 And Not $LeftDown Then
    $LeftDown=1
    MouseDown("left")
    ElseIf IniRead("cords.ini", "" & $var[$i2] & "", "mausL", "") = 0 And $LeftDown Then
    MouseUp("left")
    $LeftDown=0
    EndIf
    If IniRead("cords.ini", "" & $var[$i2] & "", "mausR", "") = 1 And Not $RightDown Then
    $RightDown=1
    MouseDown("right")
    ElseIf IniRead("cords.ini", "" & $var[$i2] & "", "mausR", "") = 0 And $RightDownThen
    MouseUp("right")
    $RightDown=0
    EndIf

    [/autoit]