Помогите чайнику Нужно получить доступ к popup menu приложения, которое висит в system tray что получилось: найти в трее иконку получить ее command id дальше попытка как-то ее потыркать (::SendMessage(hToolbar, WM_COMMAND, iCommandId, 0)) не дает результатов подскажите плз, какой message надо подсунуть в SendMessage, чтобы симулировать нажатие правой кнопки мыши на иконке в системном трее и получить popup menu без высчитывание координат, позиционирования туда мышки и кликания
найти иконку, получить ид, найти хендл приложения, чья иконка. SendMessage WM_SHELLNOTIFY приложению, wparam=ид иконки, lparam=WM_RBUTTONDOWN
ступил, сори и не найдете. Теоретически, это как-то можно по ид иконки узнать, из структуры NOTIFYICONDATA, uCallbackMessage. Если получится, то это и будет то самое сообщение, которое надо отправить. потому что другой путь в самом деле вычислять координаты и кликать
А ещё можно заделать собственную программу, которая будет грузиться раньше нужной программы, перехватывать все обращения к трею и уже сама их обрабатывать (всякие десктопозаменители типа Talisman или Aston такое умеют). Ну и где-то как-то видел пример, который выковыривал то ли хэндлы иконок в трее, то ли идентификаторы из системных потрохов, однако его работоспособность во всех виндах, ясное дело, никто не гарантирует.
Вроде у иконок в тре нет хендлов, есть хендл трея, он на себе рисует иконки. Если работа идет с конкретным приложением, то можно ID узнать например отладчиком, он всегда будет постоянный, найти его окно, которому посылаются уведомления от трея (FindWindow) и посылать ему свои уведомления.
Посмотрите в сторону функций Shell32 экспортируемых по ординалам, думаю там найдётся нужный функционал.