![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать SysTray Bar в своем приложении [D5, D6, D7, Win95/98, WinXP]
Acidlex © (2004-01-22 18:39:00)Помогите пожалуйста решить пороблему
Хочу заменить стандартный SHELL в Windows на свой.
и мне надо реализовать SysTray. Как это сделать.
Помогите хоть как получить Handle приложений которые висят в нем.
Раскладка клавиатуры, Микшер и так далее.
Acidlex (2004-01-24 14:38:00) [1]Спасибо. Вопросы у меня есть. Так что буду к Вам иногда обращатся, если Вы не против.
DVM (2004-01-24 13:23:00) [2]
> если это возможно, то пришлите пожалуйста части кода, где
> реализован Ваш System Tray
К сожалению, не могу, т.к. исходники полностью мне не принадлежат, есть соавтор, могу лишь помочь конкретными ответами на конкретные возникшие вопросы.
Спишитесь с авторами оболочек, многое могут посоветовать дельного.
Acidlex (2004-01-24 12:26:00) [3]Скачал исходники SysTray для LightStep. Они на С++, буду разбиратся.
И все же хочу Вас попросить DVM, если это возможно, то пришлите пожалуйста части кода, где реализован Ваш System Tray.
acidlex83@mail.ru
Буду Вам очень благодарен.
DVM (2004-01-22 21:23:00) [4]Лучше всего взять исходные тексты других оболочек: LiteStep, BlackBox, GeoShell и посмотреть в них реализацию трея. У всех них он неидеален, но принцип понять можно. Правда на С/С++. Самый лучший трей из виденных мною у Aston Shell (у меня есть свой и он не хуже:), но там (в Aston) без исходников. Там можно и про ShellServiceObjects прочитать и про многое другое. Адреса сайтов этих оболочек и их исходники без труда можно найти в инете. И конечно же MSDN.
Успехов в шеллостроении!
Acidlex (2004-01-22 19:50:00) [5]Большое спасибо вам DVM
Вы прояснили мне некоторые вопросы.
Не могли бы вы посоветовать какую то литературу, желательно в интернет, которая помогла бы мне справится с этой задачей.
Архитектура виндовс, или чтото в этом роде.
И что то про структуры данных иконок в трее и сообщениям для нее.
DVM (2004-01-22 19:13:00) [6]Вообще то не так все просто.
Есть два возможных варианта: при запущенном эксплорере и без него.
В первом случае нужно ставить хук на WM_COPYDATA и отслеживать сообщения окна Shell_TrayWnd, выделяя из них те, что связаны с добавлением/удалением/и т.д. иконок.
Во втором случае ваше окно должно само иметь указанный класс, т.к. именно ему будут приходить эти сообщения. Их соответственно надо обрабатывать и рисовать свои иконки.
Есть некоторые трудности: есть несколько видов структур, описывающих данные для размещения иконки в трее, различия в них надо учитывать, чтобы самодельный трей ловил все иконки.
Индикатор раскладки клавиатуры и микшер - это так называемые ComShellServiceObjects, которые надо подгружать из своей программы (при запущенном эксплорере корректно это сделать проблематично). Это в Win2k. В XP индикатор раскладки - это тоже Com объект, но реализованный как плагин для стандартного таскбара, поэтому его подгрузить не удасться, т.к. неясно как с ним работать далее.
В Win9x все указанное выше загружается по-другому: из ключа в реестре, ответственном за автозагрузку.
Вобщем проблем масса. Но все они решаемые вполне.
Acidlex (2004-01-22 18:44:00) [7]Можем поговорить в ICQ 293493613