# Function Reference

# TraySetOnEvent

Defines a user function to be called when a special tray action happens.

TraySetOnEvent ( specialID, "function" )

## Parameters

specialID | See the Special ID table below.
function | The name of the user function to call.

## Return Value

Success: | 1.
Failure: | 0.
@error: | 1 = the "function" is not defined.

## Remarks

OnEvent functions are only called when Opt("TrayOnEventMode", 1) - when in this mode TrayGetMsg() is NOT used at all.
Special ID table

Special Id | Value | Comments
--- | --- | ---
$TRAY_EVENT_SHOWICON | -3 | The tray icon will be shown.
$TRAY_EVENT_HIDEICON | -4 | The tray icon will be hidden.
$TRAY_EVENT_FLASHICON | -5 | The user turned the tray icon flashing on.
$TRAY_EVENT_NOFLASHICON | -6 | The user turned the tray icon flashing off.
$TRAY_EVENT_PRIMARYDOWN | -7 | The primary mouse button was pressed on the tray icon.
$TRAY_EVENT_PRIMARYUP | -8 | The primary mouse button was released on the tray icon.
$TRAY_EVENT_SECONDARYDOWN | -9 | The secondary mouse button was pressed on the tray icon.
$TRAY_EVENT_SECONDARYUP | -10 | The secondary mouse button was released on the tray icon.
$TRAY_EVENT_MOUSEOVER | -11 | The mouse moves over the tray icon.
$TRAY_EVENT_PRIMARYDOUBLE | -13 | The primary mouse button was double pressed on the tray icon.
$TRAY_EVENT_SECONDARYDOUBLE | -14 | The secondary mouse button was double pressed on the tray icon.

If the function is an empty string "" the previous user-defined is disabled.
The above constants are defined in #include <TrayConstants.au3>.

## Related

TrayItemSetOnEvent, TrayOnEventMode (Option), TraySetClick

## Example

    #NoTrayIcon

    #include <MsgBoxConstants.au3>
    #include <StringConstants.au3>
    #include <TrayConstants.au3> ; Required for the $TRAY_EVENT_PRIMARYDOUBLE, $TRAY_EVENT_SECONDARYUP and $TRAY_ICONSTATE_SHOW constants.

    Opt("TrayMenuMode", 3) ; The default tray menu items will not be shown and items are not checked when selected. These are options 1 and 2 for TrayMenuMode.
    Opt("TrayOnEventMode", 1) ; Enable TrayOnEventMode.

    Example()

    Func Example()
        TrayCreateItem("About")

        TrayCreateItem("") ; Create a separator line.

        TrayCreateItem("Exit")
        TrayItemSetOnEvent(-1, "ExitScript")

        TraySetOnEvent($TRAY_EVENT_PRIMARYDOUBLE, "TrayEvent")
        TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "TrayEvent")

        TraySetState($TRAY_ICONSTATE_SHOW) ; Show the tray menu.

        While 1
            Sleep(100) ; An idle loop.
        WEnd
    EndFunc   ;==>Example

    Func TrayEvent()
        Switch @TRAY_ID ; Check the last tray item identifier.
            Case $TRAY_EVENT_PRIMARYDOUBLE
                ; Display a message box about the AutoIt version and installation path of the AutoIt executable.
                MsgBox($MB_SYSTEMMODAL, "", "AutoIt tray menu example." & @CRLF & @CRLF & _
                        "Version: " & @AutoItVersion & @CRLF & _
                        "Install Path: " & StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", $STR_NOCASESENSEBASIC, -1) - 1)) ; Find the folder of a full path.

            Case $TRAY_EVENT_SECONDARYUP
                MsgBox($MB_SYSTEMMODAL, "", "The secondary mouse button was released on the tray icon.")

        EndSwitch
    EndFunc   ;==>TrayEvent

    Func ExitScript()
        Exit
    EndFunc   ;==>ExitScript