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


Автор: v258 28.4.2007, 21:11
Моя программа запускает и завершает другие программы. Но после принудительного завершения проги ее иконка остается висеть в трее, пока на нее не наведешь курсор мыши. Это может ввести в заблуждение пользователя. Можно ли после убийства процесса программно удалить его иконку из трея? При этом заранее не известно, какие программы будут запускаться и будут ли они вообще помещать иконки в трей. Т.е. можно ли как-то вызвать обновление трея для удаления возможно оставшихся там иконок?

Автор: Romikgy 28.4.2007, 21:50
сэмулируй провод мышкой в области трея.....

Автор: v258 28.4.2007, 22:20
Самопроизвольно движущийся курсор мыши - то еще зрелище, не для слабонервных  smile 
К тому же в ХР трей, обычно, свернут под стрелочку. Может есть другие варианты?

Автор: Alexeis 28.4.2007, 22:26
Можно попробовать послать трею сообщение WM_PAINT.

Автор: v258 29.4.2007, 16:17
Цитата(Alexeis @  28.4.2007,  22:26 Найти цитируемый пост)
Можно попробовать послать трею сообщение WM_PAINT. 

Не получается - не хочет перерисовываться :-(

Автор: Sunvas 1.5.2007, 00:53
Кажется в comodo firewall реализован механизм перехвата завершения своего процесса. Что, если пойдя этим путем во время завершения просто корректно убрать иконку долой?

Автор: v258 1.5.2007, 13:33
Sunvas, а поподробнее можно?

Автор: Sunvas 1.5.2007, 14:50
v258, Я сам ищу решение проблемы. Не знаю, как отловить убивание своего процесса. Я идею подсказал, дальше думай сам, если что-то наработаешь - пиши. Дальше думаю помогу.

Автор: dumb 1.5.2007, 15:03
Sunvas, ты предлагаешь идею по убиранию своей иконки, а v258 хочет убирать иконки убиваемых им же программ.

Автор: v258 1.5.2007, 17:09
Цитата(dumb @  1.5.2007,  15:03 Найти цитируемый пост)
Sunvas, ты предлагаешь идею по убиранию своей иконки, а v258 хочет убирать иконки убиваемых им же программ

Именно, момент смерти процесса я могу предсказать с точностью до... а вот с его иконкой ничего не полчается :-(

Автор: Romikgy 1.5.2007, 17:54
Возможно один из вариантов решения траблы,
перехват Shell_NotifyIcon и протоколировать что кто делает  smile 

Автор: sw04 1.5.2007, 20:45
Может эмулить нажатие клавиши на эту иконку при завершении программы? 
Даже если трей свернут, иконка будет убиваться.

Что требуется от программиста это посадить функцию 
Код
Shell_NotifyIcon(2,@Nim);
 на событие 
Msg.LParam =  WM_LBUTTONUP или WM_LBUTTONDBLCLK .

Как думаете?

Автор: Yanis 1.5.2007, 21:48
Используя поиск видим, что у нас есть: http://forum.vingrad.ru/index.php?show_type=forum&showtopic=65269, http://forum.vingrad.ru/index.php?showtopic=133977, http://forum.vingrad.ru/index.php?show_type=forum&showtopic=65269.

Автор: v258 3.5.2007, 18:30
Yanis, первая и третья ссылки ведут в одно и то же место. 

Примеры там рабочие, но ни один не срабатывает, если иконка скрыта под стрелочкой (в ХР). А как можно достать такие иконки?

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