| Как свернуть прогу в tray? | Previous Home Next |
| RxTrayIcon1.Show; |
| ShowWindow(Application.Handle,SW_HIDE); |
| Application.Restore; |
| SetForeGroundWindow(Application.MainForm.Handle); |
| RxTrayIcon1.Hide; |
| With Nim do |
| Begin |
| cbSize:=SizeOf(Nim); |
| Wnd:=Form1.Handle; |
| uID:=1; |
| uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP; |
| hicon:=Icon.Handle; |
| uCallbackMessage:=wm_user+1; |
| szTip:='Хинт, который будет появляться у значка'; |
| End; |
| Case n OF |
| 1: Shell_NotifyIcon(Nim_Add,@Nim); |
| 2: Shell_NotifyIcon(Nim_Delete,@Nim); |
| 3: Shell_NotifyIcon(Nim_Modify,@Nim); |
| End; |
| protected |
| Procedure ControlWindow(Var Msg:TMessage); message WM_SYSCOMMAND; |
| Procedure IconMouse(var Msg : TMessage); message WM_USER+1; |
| |
| Var p:tpoint; |
| 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; |