Popup меню

Тема в разделе "WASM.RESEARCH", создана пользователем Tupo, 16 фев 2005.

  1. Tupo

    Tupo New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2005
    Сообщения:
    69
    Адрес:
    Moscow
    Столкнулся с такой задачкой:

    Программа генерирует динамически попап-меню.

    Меню составляется из пунктов, передаваемых плагинами программы.

    Требуется узнать ID всех пунктов текущего попап-меню.

    Есть ли программа-монитор с подобной функцией, чтобы показывала данные по текущему выделенному пункту меню?



    Больно тяжко лезть в каждый новый плагин, чтобы смотреть с каким IDs он передаёт свои пункты меню программе :\
     
  2. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    если известно хэндл попап, то просканить его функцией GetMenuItemID в цикле... пойдет?
     
  3. Tupo

    Tupo New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2005
    Сообщения:
    69
    Адрес:
    Moscow
    Дык не хочется писать под столь мелкую проблему отдельную прогу. :dntknw:



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

    MS Spy++, MS Spy 2003 и Winspector - этого не умеют.

    Этим прогам существующие контролы подавай.

    А как им подсунуть меню, если оно разрушается сразу же после потери фокуса ;)



    Может есть в природе программа, что-то вроде старого-доброго peeper'а(он же pepper), которая показывает инфу об контроле, находящегося под курсором?
     
  4. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    можно вызвать TrackPopupMenu (опять же, если известен хэндл) с флагами TPM_NONOTIFY и TPM_RETURNCMD, тогда оно не будет посылать сообщения, а вернет ид в еах.



    или ты в чужой проге хочешь отловить? я просто что-то не пойму ситуэйшн.
     
  5. Tupo

    Tupo New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2005
    Сообщения:
    69
    Адрес:
    Moscow
    С попап-меню работать я умею ;)



    Да, именно в "чужой" проге.



    Но не в этом проблема. Проблема в другом - с "чужой" прогой используются "чужие" плагины и один мой :)



    Хотелось бы просто накидать все плагины запустить 1 раз и убедится что мой плагин не конфликтует ни с кем из плагинов.

    То есть нет плагина, который передаёт проге свой пункт для меню с тем же ID, что и мой плагин.
     
  6. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    а как ты добавляешь свою опцию меню? известен ли тебе хэндл попап-меню, или хотя бы главного меню окна (если из него можно до него добраться), или хотя бы хэндл главного окна? может, проще написать микро-плагин, который вываливает тебе все использованные ид? вообще я писал плагины (аддин-ы) только для винасма, дык, там по человечески сделано - послал месадж главному окну - получил взад уникальный идентификатор. может, в той проге, к которой ты примочку пишешь, то же такой механизм есть, дык, тогда никогда и не угадаешь - каждый раз будет новый ид...
     
  7. Tupo

    Tupo New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2005
    Сообщения:
    69
    Адрес:
    Moscow
    Нет, там все строго, передаваемый ID влияет на место пункта в попап-меню и будет ли этот пункт отделен разделителем от остальных.

    Плюс, разумеется, на этот ID "вешается" процедура-обработчик из плагина.



    Принцип той функции:

    плагин передает в структуре - название пункта, ID пункта и адрес функции отработки этого пункта(указал не все, но это основное)







    Вот! Такой вариант меня устраивает.

    Полистаю доку - кажись, возможно такое.

    Спасибо тебе.
     
  8. jekyll

    jekyll New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2003
    Сообщения:
    92
    Адрес:
    Russia
    Tupo

    plugin для olly есть windows juggler называется
     
  9. Tupo

    Tupo New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2005
    Сообщения:
    69
    Адрес:
    Moscow
    Попробовал windows juggler - не умеет он этого! :\