Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Восстановление иконки в трее.   Найти похожие ветки 

 
Иван   (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 вся ветка

Текущий архив: 2004.01.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
1-93448
NewZed
2004-01-15 21:34
2004.01.29
Стиль XP


1-93434
Bers01
2004-01-16 15:17
2004.01.29
Создание компонентов run-time


3-93336
Egorka
2003-12-29 06:06
2004.01.29
- проблема с импортированием


14-93692
anana][
2004-01-06 15:32
2004.01.29
Когда-то я спрашивал, как можно добавить юзера...


3-93361
Vi0let
2003-12-30 14:15
2004.01.29
Как прокручивать TGrid колесом мыши?