В случаях ошибки нужно информировать
В случаях ошибки нужно информировать приложения про необходимость поместить иконки обратно. Для этого послужат такие действия:
procedure TForm1.FormCreate(Sender: TObject); var WM_TASKBARCREATED: UINT; begin WM_TASKBARCREATED := RegisterWindowMessage('TaskbarCreated'); PostMessage(HWND_BROADCAST, WM_TASKBARCREATED, 0, 0); end; |
Не все приложения реагируют на такое сообщение.
Скачать демо проект (9.8K)
И несколько слов о демо проекте.ВНИМАНИЕ!!! Следуйте данным инструкциям только в том случае, если Вы ясно понимаете смысл действий!!!
Повторюсь: Shell_NotifyIconW сообщение посылает только одному окну. Поэтому чтобы увидеть результаты работы демопроекта, загружать его надо без или вместо explorer'а.
Первый вариант (для Win9x): Пример: файл
%windir%\system.ini изменить следующим образом:
Найти строчку:
shell=explorer.exe Заменить на (предполагается что демопроект находится в C:\Demotray\ ) : ;shell=explorer.exe shell=c:\demotray\demotray.exe Перегрузите Windows
Для возврата explorer'a раскомментируйте первую строчку, закомментируйте или удалите вторую.
Второй вариант: Лично я использую Far для выгрузки Explorer.exe
- 1) Загружаем IDE Delphi и демопроект
- 2) Загружаем Far, F11->Process list->
выбираем EXPLORER.EXE->F8->OK - 3) Отлаживаем проект
- 4) Для появления Explorer'a просто запустите его.
Используйте эти инструкции на свой страх и риск. Прочитайте их дважды. Внимательно изучите исходники. Трижды.
Инструкции по закрытию EXPLORER.EXE действительны для Win9x.
Если у Вас NT - разберитесь сами. Если не сможете разобратся - то за такие проекты Вам браться рановато.
Гревные ругательства "А у меня после ... ничего не работает!" не принимаются.
Благодарности: - Paul Shmakov - реверсинг Shell_NotifyIcon, моральная поддержка.
- Стив Тейксейра & Ксавье Пачеко - литература.
- Особая благодарность обоим использованым алфавитам.
Богдан МиничСмотрите также:
- Добавить "иконку" приложения в область SysTray.
Содержание Назад Вперед