Имитация щелчка правой кнопкой мыши на значке в системном трее и щелчка по контекстному меню в C++
Я разработчик Python с небольшим знанием C++.
С учетом сказанного я хотел бы понять, как можно щелкнуть правой кнопкой мыши значок в системном трее и выбрать один из параметров в контекстном меню.
Я просмотрел Интернет и не смог найти что-то, что могло бы помочь мне определить расположение значков в системном трее относительно "области уведомлений". Кроме того, я могу получить текст кнопки иконки в трее.
Я понимаю ToolbarWindow32
с помощью FindWindowEx
,
Я пытался отправить WM_RBUTTONDOWN
а также WM_RBUTTONUP
на ручку ToolbarWindow32
с координатами X и Y, используя SendMessage
и ничего не происходит
Я совершенно не обращаю внимания на то, как я могу щелкнуть правой кнопкой мыши по значку и получить информацию о контекстном меню, и, используя это, нажать на один из вариантов.
1 ответ
После моих исследований я не смог отправить сообщение о клике на иконку в системном трее, по крайней мере, через любой API, который я пробовал. Лучший способ сделать это, и вот как я следую, заключается в следующем:
- Вы отправляете сообщение TB_GETBUTTON на панель инструментов.
- Это вернет вам "idCommand" для кнопки, которую вы извлекаете, чтобы вы могли использовать цикл для получения всей "idCommand", которая находится в структуре TBBUTTON.
- С помощью idComman вы можете отправить сообщение кнопке панели инструментов с помощью ручки панели инструментов, чтобы получить размеры значка с сообщением TB_RECT.
- Как только вы узнаете размеры кнопки, вам просто нужно получить размеры панели инструментов, что просто, потому что это всего лишь окно, в котором вы вызываете функцию GetWindowRect
Последний шаг - теперь вы хотите отправить клик, который вы делаете, вызову win32api.mouse_event, где x означает: левая граница панели инструментов + половина ширины значка, а y: верхняя граница панели инструментов + половина высоты значок (так что вы отправляете клик в центр).
Вот и все, надеюсь, это поможет! Я задал похожий вопрос и ответил на него здесь.