#include "IconDock.au3"
Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1)
Opt("MustDeclareVars", 1)

Global $iIconSizeMin = 32
Global $iIconSizeMax = 64
Global $iFade = 1
Global $hIconDock
Global $hExit

OnAutoItExitRegister("_Exit")
$hExit = TrayCreateItem("MeinIconDock beenden")
TrayItemSetOnEvent(-1, "_Exit")
TraySetState()
TraySetToolTip("MeinIconDock")

ToolTip("3sec Zeit um Maus über Taskleiste zu bringen")
Sleep(3000)
ToolTip("")
_Re_Create_IconDock()

While 1
	Sleep(100)
	If Not $iFade And MouseGetPos(1) >= @DesktopHeight - 2 And MouseGetPos(0) >= @DesktopWidth/4 And MouseGetPos(0) <= @DesktopWidth - @DesktopWidth/4 Then
		_IconDock_Fade($hIconDock, $iFade, 20)
	Else
		If $iFade And MouseGetPos(1) < @DesktopHeight - $iIconSizeMax - 10 Then
			_IconDock_Fade($hIconDock, $iFade, 20)
		EndIf
	EndIf
WEnd

Func _Re_Create_IconDock()
	If $hIconDock <> "" Then
		_IconDock_Destroy($hIconDock)
		$hIconDock = ""
	EndIf
	Local $iYPos = @DesktopHeight - $iIconSizeMax - $iIconSizeMin
    
    $hIconDock = _IconDock_Create(0, $iYPos, @DesktopWidth, $iIconSizeMax + $iIconSizeMin, BitOR($IconDock_Align_Horizontal, $IconDock_Center), $IconDock_Up, $iIconSizeMin, $iIconSizeMax, True)
    _IconDock_SetOnActiveChange($hIconDock, "_MouseLeave")
    _IconDock_BeginUpdate($hIconDock)
    For $i = 1 To 20
        _IconDock_IconAddFile($hIconDock, "shell32.dll", $i, "_EventFunction", $IconDock_LBUTTONUP, "Icon #" & $i)
    Next
    _IconDock_EndUpdate($hIconDock)
    _IconDock_Fade($hIconDock, $iFade, 1)
EndFunc ; ==> _Re_Create_IconDock


Func _EventFunction($hID, $iIconIndex, $iEventMsg)
	Switch $hID
		Case $hIconDock
			_IconDock_Fade($hIconDock, $iFade, 100)
			; hier wird normalerweise das Programm gestartet
	EndSwitch
EndFunc


Func _MouseLeave($hID, $iIconIndex)
	If $iFade And $iIconIndex = 0 Then _IconDock_Fade($hIconDock, $iFade, 20)
EndFunc   ;==>_MouseLeave


Func _Exit()
	_IconDock_Destroy($hIconDock)
	Exit
EndFunc   ;==>_Exit