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

Вниз

Не совсем трэй...   Найти похожие ветки 

 
IrBisoff ©   (2004-03-24 18:48) [0]

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


 
IrBisoff ©   (2004-03-24 18:48) [0]

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


 
Burmistroff   (2004-03-24 20:04) [1]

Элементарно - узнаешь названия классов нужных окон (TrayNotifyWnd, Shell_TrayWnd), получешь их хендлы (FindWindow, если не ошибаюсь), затем SetParentWindow


 
Burmistroff   (2004-03-24 20:04) [1]

Элементарно - узнаешь названия классов нужных окон (TrayNotifyWnd, Shell_TrayWnd), получешь их хендлы (FindWindow, если не ошибаюсь), затем SetParentWindow


 
DVM ©   (2004-03-25 09:24) [2]

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

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

Вобщем вопрос не очень простой.


> Да, а ещё и таскбар туда неплохо бы..

Таскбар же придется создать полностью самому. Как создать кнопку в рунтайм наверное объяснять не надо, а вот создание/удаление/изменение окон надо отслеживать поставив хук WH_SHELL.


 
DVM ©   (2004-03-25 09:24) [2]

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

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

Вобщем вопрос не очень простой.


> Да, а ещё и таскбар туда неплохо бы..

Таскбар же придется создать полностью самому. Как создать кнопку в рунтайм наверное объяснять не надо, а вот создание/удаление/изменение окон надо отслеживать поставив хук WH_SHELL.


 
IrBisoff ©   (2004-03-26 13:08) [3]

Спасибо, DVM. Только есть ещё маленький момент. =)


> надо повесить хук на сообщения эксплорера и вылавливать
> те, что относятся к иконкам


А можно пример, как это делается ? Я ещё никогда не прехватывал  сообщения, адресованные не мне. =(


 
IrBisoff ©   (2004-03-26 13:08) [3]

Спасибо, DVM. Только есть ещё маленький момент. =)


> надо повесить хук на сообщения эксплорера и вылавливать
> те, что относятся к иконкам


А можно пример, как это делается ? Я ещё никогда не прехватывал  сообщения, адресованные не мне. =(


 
DVM ©   (2004-03-26 16:18) [4]


> А можно пример, как это делается ? Я ещё никогда не прехватывал
>  сообщения, адресованные не мне. =(

На этом сайте есть статья про ловушки. Тип ловушки которую надо ставить на окно панели задач: WH_GETMESSAGE.
Еще небольшая подсказка. Если просто поставить ловушку, то отловить можно будет лишь вновь созданные иконки, а вот те которые там уже есть остануться за бортом. Чтобы и их (или хотя бы большинство из них) заполучить надо после установки хука разослать широковещательно сообщение "TaskbarCreated", тогда окна обновят свои иконки (но не все).
И еще. Даже выполнив все что написано выше не удасться заполучить все иконки просто. Дело в том, что вид структуры, которая передается с пом. WM_COPYDATA трею различается в разных системах. Есть три или четыре версии таких структур. Надо это учитывать.
И опять это не все. В вин2000/хп есть так называемые ShellServiceObjects (например регулятор громкости), иконки которых невозможно будет заполучить не подгрузив их еще раз (это COM объекты). Но если их подгрузить еще раз их придется "отнять" у эксплорера (в эксплореровском трее они пропадут). Вот такие вот дела.

Не передумали трей делать? :)


 
DVM ©   (2004-03-26 16:18) [4]


> А можно пример, как это делается ? Я ещё никогда не прехватывал
>  сообщения, адресованные не мне. =(

На этом сайте есть статья про ловушки. Тип ловушки которую надо ставить на окно панели задач: WH_GETMESSAGE.
Еще небольшая подсказка. Если просто поставить ловушку, то отловить можно будет лишь вновь созданные иконки, а вот те которые там уже есть остануться за бортом. Чтобы и их (или хотя бы большинство из них) заполучить надо после установки хука разослать широковещательно сообщение "TaskbarCreated", тогда окна обновят свои иконки (но не все).
И еще. Даже выполнив все что написано выше не удасться заполучить все иконки просто. Дело в том, что вид структуры, которая передается с пом. WM_COPYDATA трею различается в разных системах. Есть три или четыре версии таких структур. Надо это учитывать.
И опять это не все. В вин2000/хп есть так называемые ShellServiceObjects (например регулятор громкости), иконки которых невозможно будет заполучить не подгрузив их еще раз (это COM объекты). Но если их подгрузить еще раз их придется "отнять" у эксплорера (в эксплореровском трее они пропадут). Вот такие вот дела.

Не передумали трей делать? :)



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

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

Наверх





Память: 0.47 MB
Время: 0.03 c
1-1082382811
A. Sonin
2004-04-19 17:53
2004.05.09
Собственное создание формы без использования кода в проекте


14-1081943310
Vlad Oshin
2004-04-14 15:48
2004.05.09
Как посадить Win95 на винт в 120Мб, если биос не дает кроме


14-1082223916
TUser
2004-04-17 21:45
2004.05.09
База


3-1081851727
CyBeR
2004-04-13 14:22
2004.05.09
Как вставить результат запроса Query в таблицу???.


6-1079332218
pave
2004-03-15 09:30
2004.05.09
TClientSocket в консольном приложении





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский