Форум: "WinAPI";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизВосстановление иконки в трее. Найти похожие ветки
← →
Иван (2003-11-20 14:40) [0]Всем добрый день. Есть некая программа (П1), которая в трее размещает свою иконку, причем последняя меняется по таймеру. И есть другая программа (П2), которая иногда перегружает (закрывает и открывает) shell (explorer.exe), после чего иконка программы П1 из трея исчезает. Вопрос: как можно её востановить? Или как узнать в П1, что shell был перегружен, т.к простой вызов Shell_NotifyIcon исправил бы эту проблему (желательно чтобы П2 при этом ни чего не сообщал П1).
← →
DVM (2003-11-20 14:58) [1]
> Или как узнать в П1, что shell был перегружен,
В новых версиях оболочки при ее запуске рассылается сообщение, что-то вроде "TaskBarCreated", по которому программы должны обновить свои иконки в области уведомлении (трее).
Самые новые версии оболочки умеют после запуска сами восстанавливать потерянные иконки, т.к. где то на диске сохраняют их список (имеется ввиду пропатченная XP и выше).
← →
Иван (2003-11-20 15:40) [2]Спасибо.
Вырезка из 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.
← →
Владислав (2003-11-20 16:05) [3]Я создавал таймер, который срабатывал раз в десять секунд. Если иконки в трее нет, то востанавливал ее.
← →
jonni (2003-11-20 16:09) [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:58) [5]Мне много чего неправильно приходится делать из-за того, что я понятие не имею, какой эксплорер установлен у моих покупателей.
Проверяю просто. Следующий код запускается при обработке WM_TIMER.
void UpdateNotifyIcon ()
{
NotifyIcon.uFlags = NIF_ICON;
if (!Shell_NotifyIcon(NIM_MODIFY, &NotifyIcon))
RecreateNotifyIcon();
}
← →
jonni (2003-11-21 13:24) [6]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-21 17:11) [7]> jonni © (21.11.03 13:24) [6]
К сведению. У меня и так проблем нет.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c