Восстановление иконки в трее после сбоя системы
Если ваше приложение создает и использует свою иконку в трее, то в обязательном порядке надо обрабатывать ситуацию, когда по какой-либо причине произошел сбой и перезапуск Explorer'а. В этом случае перерисовывается панель задач, рабочий стол, системный трей со значками и т.д., и если вы не вернете свою иконку в трей, то она "потеряется". При аварийном перезапуске Explorer'а всем окнам (HWND_BROADCAST) системой отсылается сообщение TaskbarCreated. Особенность этого сообщения в том, что оно не имеет постоянного значения идентификатора, и его значение должно быть получено функцией RegisterWindowMessage. В описаниях этой функции сказано, что она используется для регистрации уникального системного сообщения, но почему-то нигде не указано, что если такое сообщение уже зарегистрировано в системе, то функцией возвращается его существующий идентификатор. Это полезное свойство мы и будем использовать.Code (Assembler) : Убрать нумерацию
- ; Сегмент данных
- ...
- szTBC db 'TaskbarCreated',0 ; Имя сообщения
- restore_msg dd ? ; Идентификатор сообщения TaskbarCreated
- ...
Code (Assembler) : Убрать нумерацию
- ; Сегмент кода
- ...
- ; Зарегистрировать сообщение TaskbarCreated
- invoke RegisterWindowMessage,szTBC
- mov [restore_msg],eax
- ...
Code (Assembler) : Убрать нумерацию
- ...
- ; Сообщение TaskbarCreated?
- mov eax,[msg]
- cmp eax,[restore_msg]
- je .wmrestore
- ...
- .wmrestore:
- ; Восстановить иконку в трее
- invoke Shell_NotifyIcon, NIM_ADD, node
- jmp .processed
- ...
В приложении пример программы, которая создает иконку в трее и восстанавливает ее в случае сбоя и перезапуска Explorer'а.
Просмотров: 7493 | Комментариев: 4
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
zummenix
(04.02.2011 в 17:35):
Вот и пригодилось, спасибо :)
Вова
(03.03.2010 в 16:56):
Есть WMR - устроит ? на нужную программку - не жалко и помочь ! Тем более Вам ! RSS всегда на видном месте , жена любит читать твою кулинарию ... Сайт оч хороший , владелец отзывчивый , вот и решил обратиться .!
ManHunter
(03.03.2010 в 10:19):
C тех пор, как человечество придумало деньги, количество нерешаемых проблем резко сократилось.
Вова
(03.03.2010 в 08:41):
Дмитрий!Скажите пожалуйста , а не смогли бы Вы сделать программку , чтоб обычному человеку пользоваться, с функционалом отсюда - http://habrahabr.ru/blogs/pyth...06/#habracut , просто там дают код или как это называется , а применить не могу - незнаю как это работает .
Добавить комментарий
Заполните форму для добавления комментария