Тема: О трее
Показать сообщение отдельно
  #2  
Старый 02.02.2008, 18:10
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

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). По окончании работы приложения убираете иконку из трея. Вроде все.
Ответить с цитированием