Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизИсчезающий значок из трея Найти похожие ветки
← →
WELLiON © (2004-04-01 14:24) [0]Такая проблема: пишу прогу на винапи. Она сидит в трее и что-то делает. Начал писать. Написал только функции создания и удаления иконки трея. Столкнулся с тем, что иконка исчезает из трея, когда на нее наводишь мышкой. При этом функция удаления иконки не срабатывает. Мой код (приблизительно):
program bla-bla-bla;
//bla-bla-bla
begin
//ловлю хендл
createtrayicon(1);
messagebo(myHandle, //bla-bla-bla );
deletetrayicon(1);
end.
Когда висит мессаджбокс процесс еще не завершен, функция deletetrayicon(1) еще пока не срабатывает. В чем косяк?
Заранее спасибо.
← →
Игорь Шевченко © (2004-04-01 14:26) [1]
> В чем косяк?
В неуважении к посетителям форума
← →
WELLiON © (2004-04-01 14:42) [2]В смысле?
← →
[lamer]Barmaglot © (2004-04-01 14:53) [3]В смысле код покажи...
← →
WELLiON © (2004-04-01 14:59) [4]Попозже малость. Он у меня дома, а я сейчас в универе. Ближе к вечеру. Если только в этом проявилось мое неуважение к посетителям форума - тогда прошу прощения. Если еще в чем-то - тогда тоже прошу. %-)
← →
[lamer]Barmaglot © (2004-04-01 15:08) [5]ну если своего кода нет посмотри чужой, а потом сравнишь...
http://www.delphimaster.ru/cgi-bin/download.pl?get=1059857052&n=0
← →
WELLiON © (2004-04-01 15:13) [6]Хм. Даже и не знаю, что ответить. У меня кода раз в 20-40 поменьше. Полторы страницы, если быть точным. Вот приду домой и покажу. %-)
← →
nikkie © (2004-04-01 15:22) [7]причина скорее всего в том, что при вызове Shell_NotifyIcon указан неверный hwnd окна-приемника. при наведении мышки трей пытается посылать сообщения этому окну, обламывается и убирает иконку, считая, что приложение умерло, забыв удалить за собой иконку.
← →
WELLiON © (2004-04-01 17:21) [8]Ну так вот мой код:
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 17:54) [9]оригинально... это что ж ты хочешь - окно из другого процесса в трей засадить?
← →
WELLiON © (2004-04-02 15:05) [10]Прошу прощения за поздний ответ.
А как мне отловить координаты моего проекта в памяти?
Как мне тут же объясняли, при запуске любого процесса все равно создается окно с таким же названием. И из всего вышесказанного: тогда как мне отловить сообщения, которые направляются "моему" окну? Или лучше/проще мне создать собственное окно (на винапи), а уж потом работать с ним?
← →
WELLiON © (2004-04-02 15:05) [11]Удалено модератором
Примечание: Дубль
← →
panov © (2004-04-02 19:15) [12]см.
1. http://delphimaster.net/view/15-1080143655/
2. http://delphimaster.net/view/15-1080143655/
пост №122
← →
Suntechnic © (2004-04-02 20:02) [13]WELLiON © (02.04.04 15:05) [10]
Как мне тут же объясняли, при запуске любого процесса все равно создается окно с таким же названием.
Ерунду тебе объясняли. Либо ты так понял.
← →
WELLiON © (2004-04-02 22:25) [14]2Suntechnic : скорее второе.
2panov : спасибо.
Сорри за дубль. %-)
Огромное всем спасибо.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.046 c