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

Я разработчик 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: верхняя граница панели инструментов + половина высоты значок (так что вы отправляете клик в центр).

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

Другие вопросы по тегам