пользовательский интерфейс — Имитация правой кнопки мыши на значке в системном трее и щелчка по контекстному меню в переполнении стека

Я разработчик Python с небольшим знанием C ++.

С учетом сказанного я хотел бы понять, как можно щелкнуть правой кнопкой мыши значок в системном трее и выбрать один из параметров в контекстном меню.

Я просмотрел Интернет и не смог найти что-то, что могло бы помочь мне определить расположение значков на панели задач относительно «области уведомлений». Кроме того, я могу получить текст кнопки иконки в трее.

Я понимаю ToolbarWindow32 с помощью FindWindowEx,

Я пытался отправить WM_RBUTTONDOWN а также WM_RBUTTONUP на ручку ToolbarWindow32 с координатами X и Y, используя SendMessage и ничего не происходит

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

1

Решение

После моих исследований я не смог отправить сообщение о клике на иконку в системном трее, по крайней мере, через любой API, который я пробовал. Лучший способ сделать это, и вот как я следую, заключается в следующем:

  1. Вы отправляете сообщение TB_GETBUTTON на панель инструментов.
  2. Вы получите «idCommand» для кнопки, которую вы извлекаете, чтобы вы могли использовать цикл для получения всей «idCommand», которая находится в TBBUTTON состав.
  3. С помощью idComman вы можете отправить сообщение на кнопку панели инструментов с помощью ручки панели инструментов, чтобы получить размеры значка с TB_RECT сообщение.
  4. Как только вы узнаете размеры кнопки, вам просто нужно получить размеры панели инструментов, что просто, потому что это просто окно, в которое вы делаете вызов GetWindowRect
  5. Последний шаг — теперь вы хотите отправить клик, на который вы позвонили win32api.mouse_event где x: левая граница панели инструментов + половина ширины значка, а y: верхняя граница панели инструментов + половина высоты значка. (так что вы отправляете клик в центр).

    Вот и все, надеюсь, это поможет!
    Я задал похожий вопрос и ответил на него Вот.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]