WM_COMMAND с непонятными параметрами

Тема в разделе "WASM.WIN32", создана пользователем cresta, 4 авг 2009.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Есть одно окошко, визуально похоже на листбокс.
    Направил на него Spy, никаких сообщений.
    Есть прога - шпион за этим окошком. При её запуске этот листбокс начинает принимать сообщения.
    Дословно то, что выводит Spy:
    WM_COMMAND wNotifyCode:0 (sent from a menu) wID:57634

    Что это за wNotifyCode и wID?
    Кто-нибудь сталкивался с такой фигней?
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Да, и ещё: каждое такое сообщение приходит при появлении новой сторки в листбоксе
     
  3. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    cresta
    > Что это за wNotifyCode и wID?
    Для сообщения WM_COMMAND параметр WPARAM, согласно документации, делится на старшее и младшее слово. Старшее - wNotifyCode, младшее - wID. За подробностями в msdn.
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    То что делится на hiword/loword это я знаю. Раньше просто называлось LOWORD и HIWORD. Теперь оказывает так.
    Непонятно вот что: откуда здесь меню? У контрола его нет по определению, а у родителя его просто нет.

    Если прога-шпион использует сообщение как custom-ное, то как она читает этот контрол? Должен же быть какой-то адрес, но ничего похожего на адрес нету.
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Если контрол самописный, то в wParam/lParam может передаваться что угодно. Главное, чтобы хост знал, как обрабатывать сообщение.

    При создании контрола ему ничего не передается в CREATESTRUCT.lpCreateParams?
     
  6. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    cresta
    Не получается вникнуть в ситуацию.
    "Окошко" - top-level, или все-таки чей-то контрол?
    А если контрол - почему не смотрите родителей, всех уровней?
     
  7. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Уточняю: есть главное окно "А" программы. Оно меня не интересует.
    Это окно порождает другое полностью независимое окно "Б" (которое топ-левел), в котором есть интересующий меня контрол.
    Окно "Б" не имеет никаких менюшек, а его дочерний контрол (в котором выводится чат), получает вышеуказанные сообщения от совершенно посторонней проги-шпиона
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Или имеется в виду вариант, что окошко "Б" получает сообщения от шпиона и далее транслирует его своему дочернему контролу? Непонятно, зачем такой геморрой.
     
  9. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    именно
     
  10. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    В смысле: то, что "Б" получает сообщения - это само собой, так почему не посмотрели - какие.

    И что за "шпион"?
    А сообщения, гененируемые им при инициализации, а также все получаемые им - смотрели?
    Может, в обоих совершенно посторонних друг другу прогах - случайно одно и то же зарегистрированное сообщение?
    В общем, маловато инфы о задействованных прогах.
     
  11. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Окно "Б" - это покерный стол. В нем есть контрол, куда выводится чат. Есть проги, вполне легальные, которые собирают и анализируют статистику со стола. Одна из них - это т.н. "шпион".
    Но меня эти проги не совсем устраивают по функционалу, поэтому хочу сделать своё. Вот и ищу, каким образом снимается инфа со стола. На мой взгляд, это идет либо через этот "листбокс", возможно в этом участвует и едит(он для ввода текста в чате). Если шпион не запущен - никаких сообщений листбокс и едит не принимают. Стоит его запустить - и пошли сообщения этим двум элементам.
    При инициализации из принимаемых окном "Б" и передаваемых шпионом совпадает только одно сообщение: WM_USER+666. wparam=3f01b7 и lparam=3c003d (эти параметры постоянно меняются). Пробовал наудачу отсылать подобное со своими адресами, думал что-нибудь туда отвалится - пусто.

    Я вот уже думаю, может проще сделать распознавание текста с экрана? Правда окно должно быть все время наверху.
     
  12. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Класс окна фсиудию.
     
  13. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    PokerStarsTableFrameClass-окно, PokerStarsChatClass-контрол
     
  14. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    А собственно что мешает напрямую использовать документированные сообщения List Box и Edit типа LB_GETTEXT и т.п.? можно по таймеру, можно по перехвату нотификаций типа EN_CHANGE и т.п. родителю "Б".
     
  15. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Y_Mur
    Мешает то, что это не листбокс как таковой, просто он похож на него. Что за контрол - хз, класс PokerStarsChatClass.
    Ни на какие сообщения LB_XXXX не реагирует.
     
  16. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Понятно, будь это хоть мессаджбокс , текст-то на
    него печатается... Попробуй перехватить drawtext, textout, может это и не контрол как таковой.
     
  17. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Нашел таки, как происходит "обмен" информацией.
    Чат оказывается можно продублировать отдельным окошком. "Шпион" создает отдельный чат, задвигает его за край экрана, чтобы не мозолил глаза, устанавливает ему нужный шрифт и читает с hdc.
    Другие шпионы тоже действуют схожим образом, некоторые сами меняют шрифт, некоторые просят пользователя сменить шрифт вручную на моноширинный. Раз нужен определенный шрифт, значит идёт распознавание с экрана.
     
  18. jakimushka

    jakimushka New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2006
    Сообщения:
    43
    я в таких случаях использую debug api, ставлю breakpoint туда где выводится текст и делаю ReadMemory оттуда где этот текст должен лежать