Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Любое окно свернуть в трей (аля TrayIt)


Автор: ЧеловекБорща 14.12.2010, 19:31
Всем доброго времени суток!

Интересует вопрос:
Как программно свернуть любую программу(GUI или консоль) в системный трей?

какие действия нужно выполнить?
Что нужно послать программе и что нужно перехватывать в программе(какое событие)?

Есть ведь программа TrayIt, думаю реализовать нечто подобное в своей программе.
Есть желание такое реализовать у себя, но я не знаю всех подробностей=) Может кто полность описать как это делает TrayIt?

Помогите пожалуйста....  

Автор: Rrader 14.12.2010, 20:10
Подробности такие же, как и для своей программы. Трей - это панель инструментов, для работы с которой предусмотрена одна функция Shell_NotifyIcon. Программы в трей не сворачиваются, они прячутся оконными функциями, а в трее можно лишь управлять значком. Это вопросы "как убрать кнопку программы с панели задач?" и "как сделать окно программы невидимым?". Оба вопросы рассмотрены в любом FAQ и на форумах. Через функцию Shell_NotifyIcon можно добавить значок, который можно взять и загрузить из EXE-файла нужной программы. Как это сделать, информация общедоступная и не секретная. Когда чужая программа "в трее", вернуть ее назад можно, выполнив обратную последовательность операций по скрытию.

Автор: ЧеловекБорща 14.12.2010, 22:19
Хм=) Т.е. мне нужно иметь только Handle окна чужого приложения. А дальше работать по аналогии как со своим окном. Так?

Автор: Snowy 15.12.2010, 12:14
Так и есть.
На самом деле, в трее делаешь свой значёк.
И уже через него скрываешь или показываешь выбранное окно.
Не забывай следить, что окно ещё существует - при смерти окна нужно убирать значёк из трея.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)