Главная страница
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.014 c
1-93482
афвуд
2004-01-14 15:50
2004.01.29
Сишные Указатели на функции и их интерпретация в Дельфи


14-93691
Дремучий
2004-01-06 14:46
2004.01.29
Администрирование инет- кафе


3-93346
Stas
2004-01-04 13:46
2004.01.29
Установка MDAC


4-93740
brn
2003-11-22 17:27
2004.01.29
Получение класса окна


3-93352
mail
2004-01-03 14:42
2004.01.29
Paradox - пробелы в названии полей