Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.46 MB
Время: 0.011 c
4-93736
DillerXX
2003-11-21 16:08
2004.01.29
message


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


3-93367
Danilas
2004-01-02 16:32
2004.01.29
Как создать генератор в InterBase


3-93404
BlackCat
2003-12-30 08:35
2004.01.29
Страное поведение MS Access....


7-93721
Евген
2003-11-07 14:23
2004.01.29
Кто работал с мини-АТС КХ-ТА308





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский