
Быстрый поиск
Введите фрагмент названия статьи для поиска

Восстановление иконки в трее после сбоя системы
02.03.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter
Если ваше приложение создает и использует свою иконку в трее, то в обязательном порядке надо обрабатывать ситуацию, когда по какой-либо причине произошел сбой и перезапуск 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
- ...
Читать статью целиком »
Просмотров: 7637 | Комментариев: 4

Использование иконок разных размеров в ресурсах
12.02.2009 | Категория: Образ мышления: Assembler | Автор: ManHunter
Большим плюсом Flat Assembler является то, что при разработке создается минимальное количество файлов. Описания ресурсов хранятся прямо в исходнике ASM, что тоже очень удобно. Например, в официальной документации и исходниках описание главной иконки в ресурсах исполняемого файла выглядит примерно так:Code (Assembler) : Убрать нумерацию
- section '.rsrc' resource data readable
- directory RT_ICON, icons,\
- RT_GROUP_ICON, group_icons
- resource icons,\
- 1, LANG_NEUTRAL, icon_data
- resource group_icons,\
- 1, LANG_NEUTRAL, main_icon
- ; Описание одиночной иконки
- icon main_icon, icon_data, 'main_icon.ico'
Code (Assembler) : Убрать нумерацию
- section '.rsrc' resource data readable
- directory RT_ICON, icons,\
- RT_GROUP_ICON, group_icons
- resource icons,\
- 1, LANG_NEUTRAL, icon_data1,\
- 2, LANG_NEUTRAL, icon_data2,\
- 3, LANG_NEUTRAL, icon_data3
- resource group_icons,\
- 1, LANG_NEUTRAL, main_icon
- ; Описание иконок разных размеров, объединенных в одну
- icon main_icon,\
- icon_data1, 'icon_16x16_32bit.ico',\
- icon_data2, 'icon_32x32_32bit.ico',\
- icon_data3, 'icon_48x48_32bit.ico'
Читать статью целиком »
Просмотров: 7930 | Комментариев: 5
