#include <GUIConstants.au3>
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("Form1", 400, 250, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_PRIMARYdown')
GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_PRIMARYup')
$Label1 = GUICtrlCreateLabel("Label1", 30, 40, 40, 17, $SS_SUNKEN)
$Label2 = GUICtrlCreateLabel("Label2", 30, 80, 40, 17, $SS_SUNKEN)
$Input1 = GUICtrlCreateInput("Input1", 90, 40, 70, 20)
$Input2 = GUICtrlCreateInput("Input2", 90, 80, 70, 20)
$Group1 = GUICtrlCreateGroup("Group1", 190, 30, 190, 80)
$Pic1 = GUICtrlCreatePic(@Systemdir & "\oobe\images\mslogo.jpg",100, 140, 200, 50)

GUISetState(@SW_SHOW)

While 1
	Sleep(100)
WEnd

Func Form1Close()
	Exit
EndFunc

#region DoubleClick Check
Func _PRIMARYdown()
	$pos = MouseGetPos()
	Select
		Case _CheckCtrlDblClick($Form1, $Label1)
			_Lbl_1_DblClick()
		Case _CheckCtrlDblClick($Form1, $Label2)
			_Lbl_2_DblClick()
		Case _CheckCtrlDblClick($Form1, $Input1)
			_Inp_1_DblClick()
		Case _CheckCtrlDblClick($Form1, $Input2)
			_Inp_2_DblClick()
		Case _CheckCtrlDblClick($Form1, $Pic1)
			_Pic_1_DblClick()
		Case _CheckCtrlDblClick($Form1, $Group1)
			_Group_1_DblClick()
		Case Else 
			$MousePos = False
	EndSelect
EndFunc

Func _PRIMARYup()
	If $MousePos Then
		If $n = 2 Then 
			$n = 0
		Else
			$start = TimerInit()
		EndIf
	EndIf
EndFunc

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
#endregion DoubleClick Check
#region DoubleClick Functions
Func _Lbl_1_DblClick()
	MsgBox(0, '', 'Doubleclick Label 1')
EndFunc	

Func _Lbl_2_DblClick()
	MsgBox(0, '', 'Doubleclick Label 2')
EndFunc	

Func _Inp_1_DblClick()
	MsgBox(0, '', 'Doubleclick Input 1')
EndFunc

Func _Inp_2_DblClick()
	MsgBox(0, '', 'Doubleclick Input 2')
EndFunc

Func _Pic_1_DblClick()
	MsgBox(0, '', 'Doubleclick Picture 1')
EndFunc 
	
Func _Group_1_DblClick()
	MsgBox(0, '', 'Doubleclick Group 1')
EndFunc
#endregion DoubleClick Functions