Maus Down/Up & Wheel Up/Down Events auslesen

  • Wie man Tastendrücke auslesen kann weiß ich aber:

    Wie kann man auslesen ob eine MausTaste gedrückt oder losgelassen wurde?

    Ähnliches mit Mausrad:

    Wie kann ich auslesen ob das Mausrad vor oder zurück bewegt wurde?


    Wenn jmd da etwas weiß bitte melden ;)

    Einmal editiert, zuletzt von hundi (5. Februar 2009 um 10:33)

  • das mit dem Mausrad werd ich mir mal alles durchlesen.

    Aber zur ersten Antwort.. Ich möchte wissen wie man ausließt ob eine Maustaste GEDRÜCKT oder LOSGELASSEN wurde, nicht ob sie einfach nur betätigt wurde.

  • Ich poste mal nur die entsprechende Funktion.. Alles wäre zu lang.

    [autoit]

    Func _move_picture()

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

    $dif_pic_gui_x = $mouse_x_new - $mid_width
    $dif_pic_gui_y = $mouse_y_new - $mid_height
    ;Die oberen beiden Zeilen dürfen nur ausgeführt werden, wenn die Maustaste gedrückt wurde und nicht wenn sie aktuell gedrückt ist.
    ;(Wenns hier nicht passt werd ich das schon umbasteln nur muss ich wissen wie man dies überhaupt ausließt)

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

    $dims = GUIGetCursorInfo("[active]")
    $mouse_x_new = $dims[0]
    $mouse_y_new = $dims[1]

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

    $mid_width = ($mouse_x_new - $dif_pic_gui_x)
    $mid_height = ($mouse_y_new - $dif_pic_gui_y)

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

    Sleep(300)
    GUICtrlSetPos($the_pic,$mid_width, $mid_height, $pic_width, $pic_height)
    $first = False

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

    EndFunc

    [/autoit]
  • Soll die Funktion ausgeführt werden wenn eine Maustaste gedrückt wird? Hab ich das so richtig verstanden?
    Da mach doch einfach:

    [autoit]


    $dll = Dllopen("user32.dll")

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

    While 1
    If _IsPressed(01,$dll) then _move_picture
    Wend

    [/autoit]
  • Nene.. diese Funktion wird solange durchlaufen, wie die Maustaste gehalten wird.

    Aber um richtig zu funktionieren benötigt die Funktion einen Wert, welcher nur beim ersten drücken der Maustaste festgelegt wird.
    Solange man die Taste aber gedrückt hält darf dieser Wert nicht neu generiert werden.

  • [autoit]


    While 1
    If _IsPressed(01,$dll) then _move_picture
    Do
    Sleep(100)
    Until Not _IsPressed(01)
    Wend

    [/autoit]


    sonst führt er das ganze immer aus wenn man n bisschen länger draufbleibt (also er führts gaaanz oft hintereinander aus^^)

    Padmak

  • [autoit]


    Func _move_picture()

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

    If $Pressed = 0 then ; $Pressed muss noch deklariert werden! (mit Wert 0)
    If _IsPressed(01,$dll) then
    $dif_pic_gui_x = $mouse_x_new - $mid_width
    $dif_pic_gui_y = $mouse_y_new - $mid_height
    ;Die oberen beiden Zeilen dürfen nur ausgeführt werden, wenn die Maustaste gedrückt wurde und nicht wenn sie aktuell gedrückt ist.
    ;(Wenns hier nicht passt werd ich das schon umbasteln nur muss ich wissen wie man dies überhaupt ausließt)
    $Pressed = 1
    Endif
    Endif
    If Not _IsPressed(01,$dll) then $Pressed = 0

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

    $dims = GUIGetCursorInfo("[active]")
    $mouse_x_new = $dims[0]
    $mouse_y_new = $dims[1]

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

    $mid_width = ($mouse_x_new - $dif_pic_gui_x)
    $mid_height = ($mouse_y_new - $dif_pic_gui_y)

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

    Sleep(300)
    GUICtrlSetPos($the_pic,$mid_width, $mid_height, $pic_width, $pic_height)
    $first = False

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

    EndFunc

    [/autoit]

    Keine Ahnung obs so klappt. Einfach mal versuchen

  • [autoit]


    While 1
    If _IsPressed(01,$dll) then
    $dif_pic_gui_x = $mouse_x_new - $mid_width
    $dif_pic_gui_y = $mouse_y_new - $mid_height
    While
    _move_picture()
    WEnd
    EndIf
    Wend

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

    Func _move_picture()

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

    $dims = GUIGetCursorInfo("[active]")
    $mouse_x_new = $dims[0]
    $mouse_y_new = $dims[1]

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

    $mid_width = ($mouse_x_new - $dif_pic_gui_x)
    $mid_height = ($mouse_y_new - $dif_pic_gui_y)

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

    Sleep(300)
    GUICtrlSetPos($the_pic,$mid_width, $mid_height, $pic_width, $pic_height)
    $first = False

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

    EndFunc

    [/autoit]


    und wie soll das ganze abgebrochen werden?

    Padmak

  • Ich hab mal meine Idee umgesetzt:

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>
    While 1
    If _IsPressed("01") Then _move_picture()
    Sleep (100)
    WEnd
    Func _move_picture()
    While 1
    If not _IsPressed ("01") Then ExitLoop
    ;~ Hier musst du deine Func reinmachen
    ToolTip ("Func wird ausgeführt")
    WEnd
    ToolTip ("")
    EndFunc

    [/autoit]


    Das ToolTip musst du dann wegmachen, und in die While deine Func machen!

    mfg. Jam00

  • Das ich da nicht selber drauf gekommen bin^^

    Also MOZ.. läuft so wie es soll.. vielen Dank ;)

    Musste zwar ein wenig umstellen (Das if not _ispressed woanders hin[da die Funktion ja nur bei gedrückter Taste ausgeführt wird.. und wenn nicht gedrückt kann diese Abfrage auch nicht ausgeführt werden^^]) aber sonst alles top

  • Kein Problem :P

    Dich mag er nich ^^:rofl: Ne spaß :thumbup: ich find deins eig sogar besser als meins^^ Es fehlt nur die Abbruchfunktion

  • Ich bin halt nur von oben nach unten durchgegangen und da war moz halt der erste mit einem guten beispiel^^

    Aber natürlich auch danke an alle anderen ;)