Code: |
procedure TForm1.IconMouse(var Msg: TMessage); var p: tpoint; begin GetCursorPos(p); // Запоминаем координаты курсора мыши case Msg.LParam of // Проверяем какая кнопка была нажата WM_LBUTTONUP, WM_LBUTTONDBLCLK: {Действия, выполняемый по одинарному или двойному щел?ку левой кнопки мыши на зна?ке. В нашем слу?ае это просто активация приложения} begin Ic(3, Applicattion.Icon); // Удаляем зна?ок из трея ShowWindow(Application.Handle, SW_SHOWNORMAL); // Восстанавливаем окно программы end; WM_RBUTTONUP: {Действия, выполняемый по одинарному щел?ку правой кнопки мыши} begin SetForegroundWindow(Handle); // Восстанавливаем программу в ка?естве переднего окна PopupMenu1.Popup(p.X, p.Y); // Заставляем всплыть тот самый TPopUp о котором я говорил ?уть раньше PostMessage(Handle, WM_NULL, 0, 0) // Обнуляем сообщение end; end; end; |
Для выполнения пунктов всплывающего меню, пишите стандартные обработчики onClick() для его пунктов.
Данный опус писался только в форме, в IDE не тестировался . Всё работает конечно, но не обессудьте, если будут ошибочки мелкие.
Для работы с SystemTray существует всего одна функция. Вот ее
Си-прототип:
Code: |
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage, // message identifier PNOTIFYICONDATA pnid // pointer to structure); |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!