2010-12-06 1 views
6

Мое приложение предназначено для размещения в системном трее и ведет себя аналогично элементам лотка сети/громкости/мощности/центра действий в Windows 7 (и эквивалентным элементам в Windows Vista). То есть, он становится видимым при щелчке по значку в трее и становится скрытым, когда фокус теряется.Определение местоположения значка в лотке

Приложение написано в WPF, но в настоящее время я использую NotifyIcon из WinForms для значка в трее.

Я хотел бы знать, есть ли у кого-либо предложения относительно того, как я могу определить положение (например, координаты экрана) значка в лотке моего приложения. Элементы лотка для Windows Vista/7 по умолчанию имеют какой-то способ сделать это, так как всплывающие окна выравниваются по центру над соответствующим значком в трее.

В Vista это не было проблемой: у меня было приложение, постоянно установленное в нижнем правом углу, и это выглядело отлично (хотя не было никакой логики, включенной для случаев, когда панель задач не была размещена на внизу экрана). Однако в Windows 7 мое приложение закрывает окно всплывающего окна нового системного лотка, а не навешивается над ним, как регуляторы громкости и т. Д..

Лучшее решение, которое я видел в моих поисках до сих пор, - это обработать событие mouse-up на NotifyIcon и использовать координаты мыши для определения положения значка. Я думаю, что в конечном итоге я воспользуюсь этим методом, если кто-то не имеет лучшей идеи, хотя он не идеален, так как позиция будет немного отличаться в зависимости от того, где находится значок, который пользователь нажимает.

ответ

6

Windows 7 и выше открывают функцию Shell_NotifyIconGetRect(), которая возвращает координаты экрана ограничивающего прямоугольника значка.

Вы должны указать его идентификатор идентификатора уведомлений, но я не знаю, можете ли вы получить доступ к этому свойству через управляемый класс NotifyIcon.

+0

Большое спасибо :) я буду видеть, если я могу получить его работа с NotifyIcon и отчет. – Quppa 2010-12-06 13:20:39

+6

У меня есть функция Shell_NotifyIconGetRect(), работающая с классом WinForms NotifyIcon. Я зарегистрировал этот процесс в блоге: http://blog.quppa.net/?p=17 – Quppa 2010-12-08 06:24:09

 Смежные вопросы

  • Нет связанных вопросов^_^