![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Восстановление иконки в трее. [D7, Win2k, WinXP]
Иван © (2003-11-20 14:40:00)
Всем добрый день. Есть некая программа (П1), которая в трее размещает свою иконку, причем последняя меняется по таймеру. И есть другая программа (П2), которая иногда перегружает (закрывает и открывает) shell (explorer.exe), после чего иконка программы П1 из трея исчезает. Вопрос: как можно её востановить? Или как узнать в П1, что shell был перегружен, т.к простой вызов Shell_NotifyIcon исправил бы эту проблему (желательно чтобы П2 при этом ни чего не сообщал П1).
Владислав (2003-11-21 17:11:00) [1]
> jonni © (21.11.03 13:24) [6]
К сведению. У меня и так проблем нет.
jonni (2003-11-21 13:24:00) [2]
da...uzh.....:( vot eto sposob....
a kakaya tebe raznica kakoy explorer stoit???
raschitivay postoyanno na versiyu 6 NOTIFYICONDATA i problem u tebya nikakih nikogda ne budet.... versii explorera nizhe, sami budut razbirat"sya s lishnimi parametrami....
ya proboval... vse rabotaet horosho i ne nuzhno znat" nichego o tom kakoy explorer stoit...
i esche ... skol"ko ne proboval to vsegda Explorer (nachinaya s win98 men"she ne proboval)shlet TaskBarCreated notification pri zagruzke.... vikin" ti svoy timer i reagiruy na soobschenie
i vse budet nomal"no :)
Владислав (2003-11-20 16:58:00) [3]Мне много чего неправильно приходится делать из-за того, что я понятие не имею, какой эксплорер установлен у моих покупателей.
Проверяю просто. Следующий код запускается при обработке WM_TIMER.
void UpdateNotifyIcon ()
{
NotifyIcon.uFlags = NIF_ICON;
if (!Shell_NotifyIcon(NIM_MODIFY, &NotifyIcon))
RecreateNotifyIcon();
}
jonni (2003-11-20 16:09:00) [4]
neprvil"no eto!!! nado prosto reagirivat" na soobschenie TaskBarCreated
tebezhe pravil"no skazali....
a kak ti proveryaesh na nalichie iconci v tray esli ne secret?
Владислав (2003-11-20 16:05:00) [5]
Я создавал таймер, который срабатывал раз в десять секунд. Если иконки в трее нет, то востанавливал ее.
Иван (2003-11-20 15:40:00) [6]
Спасибо.
Вырезка из MSDN:
With Microsoft® Internet Explorer 4.0 and later, the Shell notifies applications that the taskbar has been created. When the taskbar is created, it registers a message with the TaskbarCreated string and then broadcasts this message to all top-level windows.
DVM (2003-11-20 14:58:00) [7]
> Или как узнать в П1, что shell был перегружен,
В новых версиях оболочки при ее запуске рассылается сообщение, что-то вроде "TaskBarCreated", по которому программы должны обновить свои иконки в области уведомлении (трее).
Самые новые версии оболочки умеют после запуска сами восстанавливать потерянные иконки, т.к. где то на диске сохраняют их список (имеется ввиду пропатченная XP и выше).