Spoiler anzeigen
#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("GUIOnEventMode", 1)
Opt("MouseCoordMode", 0) ; Maus-Koordinaten relativ zum Fenster
Global $start
Global $n = 0
Global $MousePos = True
Global $pos
Global $clickspeed = RegRead("HKEY_CURRENT_USER\Control Panel\Mouse", "DoubleClickSpeed")
$Form1 = GUICreate("Test", 138, 52)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_PRIMARYdown')
GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_PRIMARYup')
$Label1 = GUICtrlCreateLabel("Klick mich!", 40, 16, 55, 17)
GUICtrlSetOnEvent(-1, '_Label1')
GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetCursor(-1, 0)
$Label2 = GUICtrlCreateLabel("Klick mich doppelt!", 20, 36)
GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetCursor(-1, 0)
GUISetState(@SW_SHOW)
While 1
Sleep(3000)
WEnd
Func Form1Close()
Exit
EndFunc ;==>Form1Close
Func _Label1()
$LabelState = _Label_OnClick($Form1, $Label1)
If $LabelState = True Then
MsgBox(0, "", "Sie haben mich geklickt :P")
EndIf
EndFunc ;==>_Label1
Func _PRIMARYdown()
$pos = MouseGetPos()
Select
Case _CheckCtrlDblClick($Form1, $Label2)
_Lbl_2_DblClick()
EndSelect
EndFunc ;==>_PRIMARYdown
Func _PRIMARYup()
If $MousePos Then
If $n = 2 Then
$n = 0
Else
$start = TimerInit()
EndIf
EndIf
EndFunc ;==>_PRIMARYup
Func _Label_OnClick($hWnd, $Control_Hwnd)
GUICtrlSetColor($Control_Hwnd, 0xE51251)
$Cursorinfo99 = GUIGetCursorInfo($hWnd)
If IsArray($Cursorinfo99) Then
While $Cursorinfo99[4] = $Control_Hwnd
$Cursorinfo99 = GUIGetCursorInfo($hWnd)
If Not $Cursorinfo99[2] Then
GUICtrlSetColor($Control_Hwnd, 0x0000E4)
Return True
ExitLoop
EndIf
Sleep(10)
WEnd
EndIf
GUICtrlSetColor($Control_Hwnd, 0x0000E4)
Return False
EndFunc ;==>_Label_OnClick
Func _Lbl_2_DblClick()
MsgBox(0, '', 'Doubleclick Label 2')
EndFunc ;==>_Lbl_2_DblClick
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 ;==>_CheckCtrlDblClick