PDA

Просмотр полной версии : Delphi и трей.


xafon
14.05.2010, 21:59
Как кликнуть по значку в трее? а потом на iZoom. Вроде задача не сложная, но все же столкнулся с проблемой.
вот скрин:
http://imagepost.ru/images/124/how.JPG

JnK
14.05.2010, 23:00
Как кликнуть по значку в трее? а потом на iZoom. Вроде задача не сложная, но все же столкнулся с проблемой.
вот скрин:
http://imagepost.ru/images/124/how.JPG

Прикрути в иконке PopupMenu, он позволяет делать такое. Кодом не помню как, если компонентом.

1. Вызываешь окно, редактирования PopupMenu
2. Правой кнопкой.
3. Create SubMenu

Тык: http://www.sql.ru/Forum/actualthread.aspx?bid=20&tid=528806&hl=
http://programmersforum.ru/showthread.php?t=10923

FeRiuS
14.05.2010, 23:02
CoolTrayIcon+PopupMenu.
Скрещиваем popupmenu с треем;
В popupmenu создаешь "Плагины", затем Create Submen и создаешь iZoom;
На onclick iZoom задаешь, что нужно.

slesh
14.05.2010, 23:48
в uses добавляешь shellapi.
затем
const
WM_MYICONNOTIFY = WM_USER + 1;

Далее в private формы пропиши
procedure WMICON(var msg: TMessage); message WM_MYICONNOTIFY;
procedure CreateTrayIcon();
procedure DeleteTrayIcon();

При условии что форма - Form1
Контекстное меню - PopupMenu1
то вот код:

procedure TForm1.WMICON(var msg: TMessage);
var
P: TPoint;
begin
if msg.LParam = WM_RBUTTONDOWN then
begin
GetCursorPos(p);
SetForegroundWindow(Application.MainForm.Handle);
PopupMenu1.Popup(P.X, P.Y);
end;
end;

// нужно выполнить чтобы добавить иконку
procedure TForm1.CreateTrayIcon();
var
nidata: TNotifyIconData;
begin
with nidata do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_MYICONNOTIFY;
hIcon := Application.Icon.Handle;
StrPCopy(szTip, Application.Title);
end;
Shell_NotifyIcon(NIM_ADD, @nidata);
end;

// нужно выполнить чтобы удалить иконку
procedure TForm1.DeleteTrayIcon();
var
nidata: TNotifyIconData;
begin
with nidata do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uID := 1;
end;
Shell_NotifyIcon(NIM_DELETE, @nidata);
end;




Если же нужно программно эмулировать ввод то найди хендлы иконки. Затем посылай сообщения онклик ему. или эмуляцию ввода мышью.