const
WM_MYTRAYNOTIFY = WM_USER + 123; {123 - случайное
число,можешь прибавлять любое натуральное}
procedure WMICON(var msg: TMessage); message WM_MYTRAYNOTIFY;
// в этой процедуре будешь обрабатывать системные сообщения от иконки
procedure TForm1.CreateTrayIcon(n: integer);
var
NiData: TNotifyiconData;
I: Integer;
begin
with NiData do
begin
cbSize:=SizeOf(TNotifyIconData);
Wnd:=Self.Handle;
uID:=n; {n - номер иконки}
uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage:=WM_MYTRAYNOTIFY; {обратная связь}
hIcon:=Application.Icon.Handle; {Иконка в таскбаре}
szTip[I]:='This is trayicon tooltip'; {всплывающая подсказка}
end;
Shell_NotifyIcon(NIM_ADD,@NiData);
end;
procedure TForm1.DeleteTrayIcon(n: Integer); {n - как всегда номер}
var
NiData: TNotifyIconData;
begin
with NiData do
begin
cbSize:=SizeOf(TNotifyIconData);
Wnd:=Self.Handle;
uID:=n;
end;
Shell_NotifyIcon(NIM_DELETE,@NiData);
end;
procedure TForm1.WMICON(var msg: TMessage);
var P: TPoint;
begin
case msg.LParam of
WM_RBUTTONDOWN:
begin
GetCursorPos(P);
SetForegroundWindow(Application.MainForm.Handle);
PopupMenu1.Popup(P.X,P.Y); {вылазиет менюшка класса TPopupMenu, он есть на странице
компонентов}
end;
WM_LBUTTONDOWN:
begin
ShowWindow(Application.Handle,SW_SHOW); {Пример показа окна, нужно сделать все действия}
Visible:=True;
Application.ShowMainForm:=True;
DeleteTrayIcon(1);
ShowWindow(Application.Handle,SW_SHOW);
Application.Restore;
end;
end;
end;
Application.ShowMainForm:=False;
ShowWindow(Application.Handle,SW_HIDE);
CreateTrayIcon(1);
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2