Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Как сделать SysTray Bar в своем приложении   Найти похожие ветки 

 
Acidlex   (2004-01-22 18:39) [0]

Помогите пожалуйста решить пороблему
Хочу заменить стандартный SHELL в Windows на свой.
и мне надо реализовать SysTray. Как это сделать.
Помогите хоть как получить Handle приложений которые висят в нем.
Раскладка клавиатуры, Микшер и так далее.


 
Acidlex   (2004-01-22 18:44) [1]

Можем поговорить в ICQ 293493613


 
DVM ©   (2004-01-22 19:13) [2]

Вообще то не так все просто.
Есть два возможных варианта: при запущенном эксплорере и без него.
В первом случае нужно ставить хук на WM_COPYDATA и отслеживать сообщения окна Shell_TrayWnd, выделяя из них те, что связаны с добавлением/удалением/и т.д. иконок.

Во втором случае ваше окно должно само иметь указанный класс, т.к. именно ему будут приходить эти сообщения. Их соответственно надо обрабатывать и рисовать свои иконки.

Есть некоторые трудности: есть несколько видов структур, описывающих данные для размещения иконки в трее, различия в них надо учитывать, чтобы самодельный трей ловил все иконки.

Индикатор раскладки клавиатуры и микшер - это так называемые ComShellServiceObjects, которые надо подгружать из своей программы (при запущенном эксплорере корректно это сделать проблематично). Это в Win2k. В XP индикатор раскладки - это тоже Com объект, но реализованный как плагин для стандартного таскбара, поэтому его подгрузить не удасться, т.к. неясно как с ним работать далее.

В Win9x все указанное выше загружается по-другому: из ключа в реестре, ответственном за автозагрузку.

Вобщем проблем масса. Но все они решаемые вполне.


 
Acidlex   (2004-01-22 19:50) [3]

Большое спасибо вам DVM
Вы прояснили мне некоторые вопросы.
Не могли бы вы посоветовать какую то литературу, желательно в интернет, которая помогла бы мне справится с этой задачей.
Архитектура виндовс, или чтото в этом роде.
И что то про структуры данных иконок в трее и сообщениям для нее.


 
DVM ©   (2004-01-22 21:23) [4]

Лучше всего взять исходные тексты других оболочек: LiteStep, BlackBox, GeoShell и посмотреть в них реализацию трея. У всех них он неидеален, но принцип понять можно. Правда на С/С++. Самый лучший трей из виденных мною у Aston Shell (у меня есть свой и он не хуже:), но там (в Aston) без исходников. Там можно и про ShellServiceObjects прочитать и про многое другое. Адреса сайтов этих оболочек и их исходники без труда можно найти в инете. И конечно же MSDN.

Успехов в шеллостроении!


 
Acidlex   (2004-01-24 12:26) [5]

Скачал исходники SysTray для LightStep. Они на С++, буду разбиратся.
И все же хочу Вас попросить DVM, если это возможно, то пришлите пожалуйста части кода, где реализован Ваш System Tray.
acidlex83@mail.ru

Буду Вам очень благодарен.


 
DVM ©   (2004-01-24 13:23) [6]


> если это возможно, то пришлите пожалуйста части кода, где
> реализован Ваш System Tray

К сожалению, не могу, т.к. исходники полностью мне не принадлежат, есть соавтор, могу лишь помочь конкретными ответами на конкретные возникшие вопросы.

Спишитесь с авторами оболочек, многое могут посоветовать дельного.


 
Acidlex   (2004-01-24 14:38) [7]

Спасибо. Вопросы у меня есть. Так что буду к Вам иногда обращатся, если Вы не против.



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
4-1074679500
Sergey SP
2004-01-21 13:05
2004.04.04
Вставить текст в контрол


6-1073455439
hfa
2004-01-07 09:03
2004.04.04
Chat


1-1079422216
stelius
2004-03-16 10:30
2004.04.04
Case & not


3-1078414734
ser k
2004-03-04 18:38
2004.04.04
Написал прогу с использыванием (ADOConnection, DataSet, ADOTable


1-1079091610
Tornado
2004-03-12 14:40
2004.04.04
Работа со строками