Определение местоположения значка на панели задач

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

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

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

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

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

7
задан skaffman 6 December 2010 в 12:39
поделиться