![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исчезающий значок из трея [D7, WinXP]
WELLiON © (2004-04-01 14:24:00)Такая проблема: пишу прогу на винапи. Она сидит в трее и что-то делает. Начал писать. Написал только функции создания и удаления иконки трея. Столкнулся с тем, что иконка исчезает из трея, когда на нее наводишь мышкой. При этом функция удаления иконки не срабатывает. Мой код (приблизительно):
program bla-bla-bla;
//bla-bla-bla
begin
//ловлю хендл
createtrayicon(1);
messagebo(myHandle, //bla-bla-bla );
deletetrayicon(1);
end.
Когда висит мессаджбокс процесс еще не завершен, функция deletetrayicon(1) еще пока не срабатывает. В чем косяк?
Заранее спасибо.
WELLiON (2004-04-02 22:25:00) [1]2Suntechnic : скорее второе.
2panov : спасибо.
Сорри за дубль. %-)
Огромное всем спасибо.
Suntechnic (2004-04-02 20:02:00) [2]WELLiON © (02.04.04 15:05) [10]
Как мне тут же объясняли, при запуске любого процесса все равно создается окно с таким же названием.
Ерунду тебе объясняли. Либо ты так понял.
panov (2004-04-02 19:15:00) [3]см.
1. http://www.delphimaster.ru/cgi-bin/forum.pl?id=1080143655&n=3
2. http://www.delphimaster.ru/cgi-bin/forum.pl?id=1080142691&n=3
пост №122
WELLiON (2004-04-02 15:05:00) [4]Прошу прощения за поздний ответ.
А как мне отловить координаты моего проекта в памяти?
Как мне тут же объясняли, при запуске любого процесса все равно создается окно с таким же названием. И из всего вышесказанного: тогда как мне отловить сообщения, которые направляются "моему" окну? Или лучше/проще мне создать собственное окно (на винапи), а уж потом работать с ним?
WELLiON (2004-04-02 15:05:00) [5]Удалено модератором
Примечание: Дубль
nikkie (2004-04-01 17:54:00) [6]оригинально... это что ж ты хочешь - окно из другого процесса в трей засадить?
WELLiON (2004-04-01 17:21:00) [7]Ну так вот мой код:
program Napomin;
uses LimHinst_for_Napomin,
Windows,ShellAPI, SysUtils, messages;
const wm_myiconnotify = wm_user + 123;
{$R 123.res}
var
myh:HWND;
myicon: HIcon;
nidata: TNotifyIconData;
mymes: Tmsg; b:boolean;
path: string;
procedure CreateTrayIcon(n:integer) ;
begin
with nidata do
begin
cbSize:=SizeOf(TNotifyIconData);
wnd:=myh;
uid:=1;
uflags:=NIF_Icon or NIF_message or NIF_tip;
ucallbackmessage:=wm_myiconnotify;
hicon:=myicon;
strPcopy(szTip,'123');
end;
shell_notifyicon(NIM_ADD, @nidata);
end;
procedure DeleteTrayIcon(n:integer);
var nidata:TNotifyIconData;
begin
with nidata do
begin
cbSize:=sizeof(TNotifyIconData);
wnd:=myh;
uid:=1;
end;
shell_notifyicon(NIM_DELETE, @nidata);
end;
begin
myh:=findwindow(nil,'Napomin');
path:=paramstr(0);
myicon:=extracticon(myh,PChar(path),0);
createtrayicon(1);
messagebox(myh,'123','123',MB_OK);
deletetrayicon(1);
end.
Иконка исчезает, когда на нее наводишь курсор мыши.
2nikkie: а какое окно должно получать сообщение? И почему мое окно не работает?
nikkie (2004-04-01 15:22:00) [8]причина скорее всего в том, что при вызове Shell_NotifyIcon указан неверный hwnd окна-приемника. при наведении мышки трей пытается посылать сообщения этому окну, обламывается и убирает иконку, считая, что приложение умерло, забыв удалить за собой иконку.
WELLiON (2004-04-01 15:13:00) [9]Хм. Даже и не знаю, что ответить. У меня кода раз в 20-40 поменьше. Полторы страницы, если быть точным. Вот приду домой и покажу. %-)
[lamer]Barmaglot (2004-04-01 15:08:00) [10]ну если своего кода нет посмотри чужой, а потом сравнишь...
http://www.delphimaster.ru/cgi-bin/download.pl?get=1059857052&n=0
WELLiON (2004-04-01 14:59:00) [11]Попозже малость. Он у меня дома, а я сейчас в универе. Ближе к вечеру. Если только в этом проявилось мое неуважение к посетителям форума - тогда прошу прощения. Если еще в чем-то - тогда тоже прошу. %-)
[lamer]Barmaglot (2004-04-01 14:53:00) [12]В смысле код покажи...
WELLiON (2004-04-01 14:42:00) [13]В смысле?
Игорь Шевченко (2004-04-01 14:26:00) [14]
> В чем косяк?
В неуважении к посетителям форума