![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Всем привет!
Хотелось бы узнать как реализовать такое: Есть какая-то программа (например: Skype 4.2, Media Player Classic), нужно сделать так чтобы ее значок из панели задач перемещался в трей, но окно оставалось активным (так как это делает QIP). Смотрел вот ЭТУ статейку, но ничего подходящего не нашел ![]() Последний раз редактировалось Danik007, 27.01.2010 в 00:29. |
#2
|
||||
|
||||
![]() Неужели это не возможно?
Уважаемый форумчани помогите! Очень интересно как это реализовать!!! |
#3
|
|||
|
|||
![]() Ну, что это возможно - это точно. Сам никогда не делал, но идея есть.
Ты должен: 1. Хукнуть окно программы 2. При его сворачивании установить ему невидимость (SW_HIDE, если ты что-нить понимаешь) 3. Вывесить иконку в трее (иконку взять у исполняемого модуля программы) 4. При клике на иконку восстановить видимость окна (SW_SHOW). Ну как-то так. |
#4
|
||||
|
||||
![]() Алгоритм я знаю
![]() Я получаю дескриптор окна, использую SW_HIDE и делаю все (почти все) как вы написали. Но у меня есть проблема, я не могу переместить в трей прикладную программу. Есть пара исходнико, но не знаю как в них добавить обращение к проге(получение дескриптора). Если у кого есть материалы по теме поделитесь пожалуйста. P.S. Что значить - "Хукнуть"? Последний раз редактировалось Danik007, 27.01.2010 в 00:30. |
#5
|
|||
|
|||
![]() Ну получит хендл окна способов много. Ну к примеру используй Find Window. А хук ето перехватчик. Эт те надо в faq там найдеш ответ.
|
#6
|
||||
|
||||
![]() Использую NOTIFYICONDATA, но не знаю как получить дескриптор иконки.
Вот пример структуры NOTIFYICONDATA: Код:
with TrayIconData do begin cbSize := SizeOf(TrayIconData); //размер иконки. ну тут и не надо что-то менять Wnd := FindWindow('Notepad', nil); // дескриптор окна, для примера взял блокнот uID := 0; uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP; uCallbackMessage := WM_ICONTRAY; //понятия не имею что это. Если не сложно подскажите, на этом месте при компиляции ошибка. hIcon := ТУТ ДОЛЖЕН БЫТЬ ХЕНД ИКОНКИ :( ; StrPCopy(szTip, 'Свернутый в трей блокнот 0_о'); //текст для ToolTip'а end; Shell_NotifyIcon(NIM_ADD, @TrayIconData); Вот вроде и описал, пока хотелось бы разобраться хотябы с этим! Сам не справлюсь нужна помощь и я очень на нее надеюсь. Всем откликнувшимся спасибо!!! |