После добавления иконки на Tray можно менять саму иконку, ToolTip  и  сообщение,  посылаемое  окну.  Для  этого необходимо заполнить  экземпляр     структуры    NOTIFYICONDATA   и   вызвать   функцию  Shell_NotifyIcon()    с   параметром   NIM_MODIFY   и  указателем  на заполненный экземпляр структуры.  При  изменении  иконки  необходимо заполнить поля cbSize, hWnd,   uID,  uFlags  и  поля, отвечающие за параметры иконки, которые вы хотите  менять.  При  этом  uFlags  должен  содержать  комбинацию флагов, описывающую поля, которые необходимо модифицировать.

 

Данный код сперва конвертирует Ваш текст в DIB, а затем DIB в иконку и далее в ресурс. После этого изображение иконки отображается в System Tray.

 Вызов просходит следующим образом....

 StringToIcon('This Is Made By Ruslan K. Abu Zant');

N.B>> Не забудьте удалить объект HIcon, после вызова функции...

 

Для  удаления  иконки  вы  должны  знать  ее  ID  и  дескриптор   окна-обработчика сообщений.   Для    удаления    иконки   с   Tray   надо   вызвать   функцию     Shell_NotifyIcon()   с  параметром  NIM_DELETE  и  указателем  на   экземпляр   структуры  NOTIFYICONDATA,  у  которого  должны  быть  заполнены следующие поля: cbSize, hWnd, uID.

В Windows 2000, формат структуры NotifyIconData, которая используется для работы с иконками в Трее (которая, кстати, называется "The Taskbar Notification Area" :) значительно отличается от предыдущий версий Windows. Однако, эти изменения НЕ отражены в юните ShellAPI.pas в Delphi 5.

 

При  добавлении  иконки  на  Tray вы  указывали окно - обработчик    сообщения  и  сообщение (CallbackMessage). Теперь окно, указанное     вами  будет  при  любых  событиях  мыши, происходящих над иконкой   получать  сообщение,  указанное  при  добавлении иконки. При этом   параметры lParam и wParam будут задействованы следующим образом:

 

       (UINT)wParam   -   содержит ID иконки, над которой произошло

                          событие

       (UINT)lParam   -   содержит стандартное событие мыши, такое

                          как WM_MOUSEMOVE или WM_LBUTTONDOWN.

 

При  этом,  информация  о  клавишах  смены регистра, так же как и     местоположения  события, передаваемые при стандартных " настоящих"     сообщениях мыши, теряются.       Hо  положение  курсора  можно узнать функцией GetCursorPos(), а состояние   клавиш   смены  регистра  -  функцией  GetKeyState(),  описанных в winuser.h.

 

 

Проще всего использовать RxTrayIcon компонент из библиотеки RxLib

При следующем обновлении часов надпись исчезнет. Так что можно делать это по таймеру.

Многие программы показывают Pop-Up меню при щелчке на их иконке,  помещенной на Tray, как этого добиться ?

 

Вы  должны  обрабатывать сообщение, указанное вами при добавлении   иконки  на Tray. При значении (UINT)lParam, равном WM_RBUTTONDOWN  (это обычно дял Pop-Up меню по правой кнопке), или любому другому  необходимому   вам,  вы  должны  вызовом  функции  GetCursorPos()  получить  позицию  курсора в момент события (вряд ли пользователь     успеет  убрать  мышь  за время обработки сообщения, особенно если   он ожидает меню), получить вескриптор Pop-Up меню одним из многих  способов  (LoadMenu(),  GetSubMenu(),  CreateMenu(),  и  т.д.)  и    выполнить следующий код:       

Вы, наверное, видели множество примеров, которые показывают как скрывать панель задач или кнопку Пуск. Но вот как скрыть только System Tray ?

 

Убираем часы:

Code:

procedure TForm1.Button1Click(Sender: TObject);

var hn: HWnd;

begin

hn := FindWindowEx(FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'TrayNotifyWnd', nil), 0, 'TrayClockWClass', nil);

if hn <> 0 then

   ShowWindow(hn, SW_HIDE); //Bye,bye,Baby

end;

 

Если  Вы  в  операционной  сиcтеме  Windows пользуетесь   оболочкой  Explorer,  то  справа  на  TaskBar'е  Вы должны  были  видеть  " углубленную"   область  в  которой, обычно, помещаются  часы, переключатель клавиатуры, регулятор громкости и некоторые  другие утилиты. Они изображаются маленькими иконками и для  них  существуют  ToolTip'ы  как  для  кнопок ToolBar'ов. При щелчке  или  двойном  щелчке  по  такой  иконке  программа обычно выполняет  действие  по  умолчанию,  а  при щелчке правой кнопкой показывает Pop-Up меню. Hа  уровне  оболочки System Tray это приложение, поддерживающее окно,  которое  вы  видите  как " углубленную"  область и некоторый сервис для работы с этим окном.