überprüfen doppelklick (linke maustaste)

  • ist es möglich einen doppelklick mittels ispressed der linken maustaste zu überprüfen bzw zu prüfen ob dieser getätigt wurde?

    von der theorie her müsste man ab dem ersten drücken der taste die zeit messen. verstreicht ein gewisser zeitraum, wird dies als einfacher klick gewertet. liegt der intervall in einem definitionsbereich (~0,2...0,7sec) ist es ein doppelklick.
    das wäre die theorie für eine funktion mit ispressed.

    existiert bereits eine funktion in der autoit blibliothek, die dies überprüft? man mus ja nicht alles neu 'erfinden' :whistling:

    Einmal editiert, zuletzt von bocky3 (10. Juni 2009 um 11:43)

  • so war es gedacht.
    überprüfen ob auf einem steuerelement ein doppelklick mit der linken maustaste gemacht wurde.

  • Guck dir das mal an:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)
    Opt("MouseCoordMode", 0) ; WICHTIG, Maus-Koordinaten relativ zum Fenster
    Dim $start, $n = 0, $MousePos = True, $pos
    Dim $clickspeed = RegRead("HKEY_CURRENT_USER\Control Panel\Mouse", "DoubleClickSpeed")

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

    $Form1 = GUICreate("Form1", 633, 454, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_PRdown')
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_PRup')
    $Label1 = GUICtrlCreateLabel("Label1", 144, 108, 36, 17)
    $Label2 = GUICtrlCreateLabel("Label2", 144, 148, 36, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func _PRdown()
    $pos = MouseGetPos()
    If _CheckCtrlDblClick($Form1, $Label1) Then
    _LblDblClick()
    ElseIf _CheckCtrlDblClick($Form1, $Label2) Then
    _LblDblClick2()
    Else
    $MousePos = False
    EndIf
    EndFunc

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

    Func _PRup()
    If $MousePos Then
    If $n = 2 Then
    $n = 0
    Else
    $start = TimerInit()
    EndIf
    EndIf
    EndFunc

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

    Func _LblDblClick()
    MsgBox(0, '', 'Doppelklick Label 1')
    EndFunc

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

    Func _LblDblClick2()
    MsgBox(0, '', 'Doppelklick Label 2')
    EndFunc

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

    Func _CheckCtrlDblClick($GUI, $CTRL)
    Local $CtrlPos = ControlGetPos($GUI, '', $CTRL)
    If ($pos[0] >= $CtrlPos[0] And $pos[0] <= $CtrlPos[0] + $CtrlPos[2]) And _
    ($pos[1] >= $CtrlPos[1] +20 And $pos[1] <= $CtrlPos[1] +20 + $CtrlPos[3]) Then
    $n += 1
    $MousePos = True
    If $n = 2 And (TimerDiff($start) < $clickspeed) Then
    Return True
    Else
    $start = TimerInit()
    $n = 1
    EndIf
    EndIf
    EndFunc

    [/autoit]

    Das ist von BugFix, hab ich irgendwo mal gefunden

    mfg. Jam00

  • danke, hat geholfen.
    habs zwar ersteinmal ohne doppelclick gemacht und mit GUIGetCursorInfo realisiert aber intention bleibt die gleiche.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt ("GUIOnEventMode", 1)
    Opt("MouseCoordMode", 0)

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

    #Region ### START Koda GUI section ### Form=E:\autoit\spiel\system\show.kxf
    $Form2 = GUICreate("Form2", 182, 275, 343, 232)
    $Group1 = GUICtrlCreateGroup("", 0, 32, 180, 240)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("aktiv", 0, 0, 51, 25)
    $Label2 = GUICtrlCreateLabel("passiv", 56, 0, 50, 25)
    $Label3 = GUICtrlCreateLabel("spezial", 112, 0, 68, 25)
    GUISetOnEvent($GUI_EVENT_CLOSE, "exit_")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, 'click')
    ;GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_PRup')
    GUISetState()
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(125)
    WEnd

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

    Func exit_()
    Exit
    EndFunc

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

    Func click()
    $pos = GUIGetCursorInfo()
    If $pos[0] >= 0 And $pos[0] <= 50 And $pos[1] >= 0 And $pos[1] <= 25 And $pos[2] = 1 Then
    MsgBox(0, "", "1")
    ElseIf $pos[0] >= 51 And $pos[0] <= 105 And $pos[1] >= 0 And $pos[1] <= 25 And $pos[2] = 1 Then
    MsgBox(0, "", "2")
    ElseIf $pos[0] >= 106 And $pos[0] <= 156 And $pos[1] >= 0 And $pos[1] <= 25 And $pos[2] = 1 Then
    MsgBox(0, "", "3")
    EndIf
    EndFunc

    [/autoit]