popup menu приложения в system tree

Тема в разделе "WASM.BEGINNERS", создана пользователем LubaEls, 19 мар 2010.

  1. LubaEls

    LubaEls New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2006
    Сообщения:
    17
    Помогите чайнику

    Нужно получить доступ к popup menu приложения, которое висит в system tray

    что получилось:
    найти в трее иконку
    получить ее command id

    дальше попытка как-то ее потыркать (::SendMessage(hToolbar, WM_COMMAND, iCommandId, 0)) не дает результатов
    подскажите плз, какой message надо подсунуть в SendMessage, чтобы симулировать нажатие правой кнопки мыши на иконке в системном трее и получить popup menu
    без высчитывание координат, позиционирования туда мышки и кликания
     
  2. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    найти иконку, получить ид, найти хендл приложения, чья иконка.

    SendMessage WM_SHELLNOTIFY приложению, wparam=ид иконки, lparam=WM_RBUTTONDOWN
     
  3. LubaEls

    LubaEls New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2006
    Сообщения:
    17
    а как найти хендл приложения (извините)

    WM_SHELLNOTIFY - я такого не нашла
     
  4. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    ступил, сори :) и не найдете. Теоретически, это как-то можно по ид иконки узнать, из структуры NOTIFYICONDATA, uCallbackMessage. Если получится, то это и будет то самое сообщение, которое надо отправить.

    потому что другой путь в самом деле вычислять координаты и кликать
     
  5. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    А ещё можно заделать собственную программу, которая будет грузиться раньше нужной программы, перехватывать все обращения к трею и уже сама их обрабатывать (всякие десктопозаменители типа Talisman или Aston такое умеют).

    Ну и где-то как-то видел пример, который выковыривал то ли хэндлы иконок в трее, то ли идентификаторы из системных потрохов, однако его работоспособность во всех виндах, ясное дело, никто не гарантирует.
     
  6. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Вроде у иконок в тре нет хендлов, есть хендл трея, он на себе рисует иконки.
    Если работа идет с конкретным приложением, то можно ID узнать например отладчиком, он всегда будет постоянный,
    найти его окно, которому посылаются уведомления от трея (FindWindow) и посылать ему свои уведомления.
     
  7. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Twister что-то такое делал. м.б. поможет. правда там на VB, но наверняка это не станет проблемой.
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Посмотрите в сторону функций Shell32 экспортируемых по ординалам, думаю там найдётся нужный функционал.