Мое приложение предназначено для размещения в системном трее и ведет себя так же, как элементы лотка Network / Volume / Power / Action Center в Windows 7 (и аналогичные элементы в Windows Vista).То есть он становится видимым при щелчке значка в трее и скрывается при потере фокуса.
Приложение написано в WPF, но в настоящее время я использую NotifyIcon из WinForms для иконки в трее.
Я хотел бы знать, есть ли у кого-нибудь какие-либо предложения относительно того, как я могу определить положение (т.е. экранные координаты) значка на панели задач моего приложения.По умолчанию элементы лотка в Windows Vista / 7 имеют некоторый способ сделать это, так как всплывающие окна выровнены по центру над значком соответствующего лотка.
В Vista это не было большой проблемой: у меня былоприложение постоянно находилось в правом нижнем углу, и это выглядело нормально (хотя не было никакой логики для случаев, когда панель задач не помещалась внизу экрана).Однако в Windows 7 мое приложение закрывает всплывающее окно нового системного трея, а не зависает над ним, как регуляторы громкости и т. Д.
Лучшее решение, которое я видел в моих поискахдо сих пор обрабатывать событие-указатель мыши на NotifyIcon и использовать координаты мыши для определения положения значка.Я думаю, что в конечном итоге я воспользуюсь этим методом, если только у кого-то нет лучшей идеи, хотя он не идеален, поскольку позиция будет немного отличаться в зависимости от того, где внутри значка пользователь нажимает.