Функция TrayItemGetHandle

         Описание функции


TrayItemGetHandle

Возвращает указатель элемента меню или пункта трея.

TrayItemGetHandle ( controlID )

Параметры

controlID Идентификатор элемента (controlID), возвращаемый функциями TrayCreateItem() или TrayCreateMenu().

Возвращаемое значение

Успех:Возвращает указатель данного идентификатора.
Ошибка:Возвращает 0.

Примечания

Чтобы получить указатель самого контекстного меню трея используйте '0' в качестве идентификатора (controlID).

См. также

TrayItemGetState, TrayItemGetText

Пример

#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