![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не совсем трэй... [D7, Win95/98, WinME, NT4, Win2k, WinXP]
IrBisoff © (2004-03-24 18:48:00)Насчёт того, как поместить что-либо в трэй я спрашивать не стану. =)
Вместо этого меня сейчас интересует, как бы наоборот сделать - поместить окно трэя в моё приложение. =\
А то ни одной идеи в голову не лезет, даже не знаю с чего начать..
Да, а ещё и таскбар туда неплохо бы.. Но пока что я обхожусь тем, что кидаю на свой все видимые окна. Не совсем то, но главное что работает. =)
Буду чрезвычайноблагодарен за любую помощь..
DVM (2004-03-26 16:18:00) [1]
> А можно пример, как это делается ? Я ещё никогда не прехватывал
> сообщения, адресованные не мне. =(
На этом сайте есть статья про ловушки. Тип ловушки которую надо ставить на окно панели задач: WH_GETMESSAGE.
Еще небольшая подсказка. Если просто поставить ловушку, то отловить можно будет лишь вновь созданные иконки, а вот те которые там уже есть остануться за бортом. Чтобы и их (или хотя бы большинство из них) заполучить надо после установки хука разослать широковещательно сообщение "TaskbarCreated", тогда окна обновят свои иконки (но не все).
И еще. Даже выполнив все что написано выше не удасться заполучить все иконки просто. Дело в том, что вид структуры, которая передается с пом. WM_COPYDATA трею различается в разных системах. Есть три или четыре версии таких структур. Надо это учитывать.
И опять это не все. В вин2000/хп есть так называемые ShellServiceObjects (например регулятор громкости), иконки которых невозможно будет заполучить не подгрузив их еще раз (это COM объекты). Но если их подгрузить еще раз их придется "отнять" у эксплорера (в эксплореровском трее они пропадут). Вот такие вот дела.
Не передумали трей делать? :)
IrBisoff (2004-03-26 13:08:00) [2]Спасибо, DVM. Только есть ещё маленький момент. =)
> надо повесить хук на сообщения эксплорера и вылавливать
> те, что относятся к иконкам
А можно пример, как это делается ? Я ещё никогда не прехватывал сообщения, адресованные не мне. =(
DVM (2004-03-25 09:24:00) [3]Создать свое окно с классом Shell_TrayWnd и если эксплорер в данный момент не запущен, то этому вашему окну будут приходить сообщения WM_COPYDATA из которых надо выделить те, что связаны с добавлением/удалением/изменением/и т.д. иконок в область уведомлений.
Если надо сделать так, чтобы это все работало при запущенном эксплорере, то надо повесить хук на сообщения эксплорера и вылавливать те, что относятся к иконкам.
Вобщем вопрос не очень простой.
> Да, а ещё и таскбар туда неплохо бы..
Таскбар же придется создать полностью самому. Как создать кнопку в рунтайм наверное объяснять не надо, а вот создание/удаление/изменение окон надо отслеживать поставив хук WH_SHELL.
Burmistroff (2004-03-24 20:04:00) [4]Элементарно - узнаешь названия классов нужных окон (TrayNotifyWnd, Shell_TrayWnd), получешь их хендлы (FindWindow, если не ошибаюсь), затем SetParentWindow