Shell_NotifyIcon принимает два параметра: dwMessage - идентификация действия, которое надлежит выполнить (NIM_ADD - добавить иконку в трей, NIM_DELETE - удалить, NIM_MODIFY - изменить) и указатель на запись типа TNotifyIconData. Эта запись выглядит так (описана в ShellAPI):
Код:
TNotifyIconDataA = _NOTIFYICONDATAA;
TNotifyIconData = TNotifyIconDataA;
_NOTIFYICONDATAA = record
{ размер записи }
cbSize: DWORD;
{ идентификатор окна, которое будет получать
сообщения о нажатиях и перемещениях мыши на иконке в трее
Wnd: HWND;
{ номер пиктограммы. Если вы размещаете только одну иконку - указываете 0 }
uID: UINT;
{ флаги (NIF_ICON, NIF_MESSAGE, NIF_TIP) }
uFlags: UINT;
{ сообщение, которое посылается окну при
попадании мыши на иконку в трее }
uCallbackMessage: UINT;
{ Хэндл иконки }
hIcon: HICON;
{ текст всплывающей подсказки }
szTip: array [0..63] of AnsiChar;
end;
Размещаете иконку в трей, как сделано у вас в примере, у окна приложения определяете функцию, которая будет слушать сообщения от иконки. В этом сообщении wParam - номер пиктограммы (если она одна, то ноль), в поле lParam - информация о том, что там случилось с иконкой (какую кнопку мыши нажали) - константа типа WM_* (можно посмотреть в файле Messages.pas). По окончании работы приложения убираете иконку из трея. Вроде все.