Вопрос

У меня есть элемент управления NotifyIcon, который появляется на панели задач.Как мне найти местоположение (x, y) значка на экране?

Спасибо

Это было полезно?

Решение

Вы не можете.Получить дескриптор окна для панели задач несложно: GetClassName() возвращает «ToolbarWindow32», имя класса стандартного общего элемента управления ToolBAR.Помните, что в 64-битной ОС их два.Затем вы можете отправлять ему сообщения типа TB_GETBUTTONINFO.Основная проблема заключается в том, что вы не будете знать, какой идентификатор кнопки выбрать, а возвращаемая информация не включает положение кнопки.

И это к лучшему: кнопки перемещаются, и вы не можете их заблокировать.

Другие советы

На самом деле вы можете это сделать, вот код, который показывает, как это сделать, и многое другое.

В любом событии мыши из NotifyIcon просто посмотрите Control.MousePosition, он содержит (x,y) мыши.То же самое можно сделать, чтобы расположить ContextMenu в форме/элементе управления именно там, где была щелкнута форма/элемент управления, используя эти значения (x,y).

Хороший пример того и другого здесь:

Подробнее здесь: http://code.msdn.microsoft.com/TheNotifyIconExample

После долгого пути проб и ошибок и разработки собственного локатора значков уведомлений я разработал способ поиска значка с лучшим положением, который до сих пор работал хорошо, пока не увидел этот удивительный проект @zhwang. SuperNotifyIcon.В этом проекте есть три способа найти значок уведомления: от неточного (как моя собственная разработка) до использования нового в Windows 7 API.Это окончательный ответ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top