#NoTrayIcon

Opt("TrayMenuMode", 1 + 2) ; Не отображать в трее пункты меню по умолчанию (Script Paused/Exit) и не отмечать галочками при выборе.

TraySetIcon("shell32.dll", -111) ; иконка в виде папки с галочкой
TraySetToolTip("Пример показывает, что цветное меню" & @LF & "легко реализовать под Windows 2000 и выше.")

Global Const $MIM_APPLYTOSUBMENUS = 0x80000000, $MIM_BACKGROUND = 0x00000002 ; Константы необходимые для SetMenuColor

$iSettings = TrayCreateMenu("Настройки") ; Создаёт меню трея и подменю с 2-мя пунктами.
$iDisplay = TrayCreateItem("Монитор", $iSettings)
$iPrinter = TrayCreateItem("Принтер", $iSettings)
TrayCreateItem("") ; Создаёт разделитель

$iAbout = TrayCreateItem("О программе")
TrayCreateItem("") ; Создаёт разделитель

$iExit = TrayCreateItem("Выход")

TraySetState(1) ; Показывает меню трея

SetMenuColor(0, 0xEEBB99) ; Значение цвета BGR , 0 - означает корневое меню трея.
SetMenuColor($iSettings, 0x66BB99) ; Значение цвета BGR для меню 'Настройки'.

While 1
	Switch TrayGetMsg()
		Case $iAbout
			MsgBox(4096, "", "Пример меню в трее." & @CRLF & @CRLF & _
					"Версия AutoIt: " & @AutoItVersion & @CRLF & _
					"Путь установки: " & StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1) - 1))

		Case $iDisplay, $iPrinter
			MsgBox(4096, "", "Был выбран вложенный пункт в меню трея.")

		Case $iExit ; Выход
			ExitLoop
	EndSwitch
WEnd

; Применяет цвет в меню
Func SetMenuColor($iMenuID, $iColor)
	Local $hMenu = TrayItemGetHandle($iMenuID) ; Получает дескриптор меню

	Local $hBrush = DllCall("gdi32.dll", "hwnd", "CreateSolidBrush", "int", $iColor)
	$hBrush = $hBrush[0]

	Local $tMenuInfo = DllStructCreate("dword;dword;dword;uint;ptr;dword;ptr")
	DllStructSetData($tMenuInfo, 1, DllStructGetSize($tMenuInfo))
	DllStructSetData($tMenuInfo, 2, BitOR($MIM_APPLYTOSUBMENUS, $MIM_BACKGROUND))
	DllStructSetData($tMenuInfo, 5, $hBrush)

	DllCall("user32.dll", "int", "SetMenuInfo", "hwnd", $hMenu, "ptr", DllStructGetPtr($tMenuInfo))
EndFunc