![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Shell своими руками - System TrayDelphi , Рабочий стол , TrayBarShell своими руками - System TrayАвтор: Богдан Минич Иконку в трей помещают с помощью Shell_NotifyIconW. Интересено посмотреть на этот процесс с другой точки зрения. Цитата с сайта delphi.mastak.ru:
Shell_NotifyIconW просто ищет окно с классом "Shell_TrayWnd" и посылает в него сообщение WM_COPYDATA. в качестве данных выступает простая структура TNIDMessage. возвращаясь к топику: если создать свое окно с классом "Shell_TrayWnd" и обрабатывать входящие сообщения WM_COPYDATA, то можно написать полный аналог system tray! ... (с) paul_shmakov ...чем и займемся. В первую очередь немаловажное замечание: сообщение посылается только одному окну, то есть наше приложение должно грузится первым. Разные там explorer'ы и другие подобные будут мешать. Шаг первый: Создаем окно "Shell_TrayWnd"
Все. Окно класса "Shell_TrayWnd" имеем. Шаг второй: Ловим WM_COPYDATA
В случаях ошибки нужно информировать приложения про необходимость поместить иконки обратно. Для этого послужат такие действия:
Не все приложения реагируют на такое сообщение. Скачать демо проект DemoTray.zip (9.8K) И несколько слов о демо проекте. ВНИМАНИЕ!!! Следуйте данным инструкциям только в том случае, если Вы ясно понимаете смысл действий!!! Повторюсь: Shell_NotifyIconW сообщение посылает только одному окну. Поэтому чтобы увидеть результаты работы демопроекта, загружать его надо без или вместо explorer'а. Первый вариант (для Win9x): Пример: файл %windir%\system.ini изменить следующим образом: Найти строчку:
Заменить на (предполагается что демопроект находится в C:\Demotray\ ) :
Перегрузите Windows Второй вариант: Лично я использую Far для выгрузки Explorer.exe
Используйте эти инструкции на свой страх и риск. Прочитайте их дважды. Внимательно изучите исходники. Трижды. Инструкции по закрытию EXPLORER.EXE действительны для Win9x.Если у Вас NT - разберитесь сами. Если не сможете разобратся - то за такие проекты Вам браться рановато. Гревные ругательства "А у меня после ... ничего не работает!" не принимаются.Благодарности:
Статья Shell своими руками - System Tray раздела Рабочий стол TrayBar может быть полезна для разработчиков на Delphi и FreePascal. Комментарии и вопросыМатериалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
|||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 ![]() |