Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

Как сделать 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.03 c
6-1075314929
Maxim Volobuev
2004-01-28 21:35
2004.04.04
Web-страница c UNICODE


1-1079565881
Almaz
2004-03-18 02:24
2004.04.04
Иконка кнопки закрытия окна


4-1074893998
Raki
2004-01-24 00:39
2004.04.04
Имя процесса


4-1074785967
Acidlex
2004-01-22 18:39
2004.04.04
Как сделать SysTray Bar в своем приложении


14-1078671515
Delphi5.01
2004-03-07 17:58
2004.04.04
Adobe Premiere





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский