перехват Windows Message

Тема в разделе "WASM.WIN32", создана пользователем xxDreYxx, 3 июл 2011.

  1. xxDreYxx

    xxDreYxx New Member

    Публикаций:
    0
    Регистрация:
    3 май 2011
    Сообщения:
    3
    собственно нужно отслеживать все сообщения которые шлёт винда определённому окну.мне нужно просто посмотреть что винда шлёт а не подменять собщения.у меня стоит Windows XP. буду очень благодарен если поможите.
    P.S. отвечаю зачем это нужно моей основной целью является эмуляция работы мыши в неактивном окне конкретно в игре.
    Код (Text):
    1.   x:=100;y:=0;
    2.   H:=FindWindow(Nil,'Google - Mozilla Firefox');
    3.   Edit1.Text:=IntToStr(H);
    4.   PostMessage(H, WM_LBUTTONDOWN,MK_LBUTTON,MAKELONG(x,y));
    5.   PostMessage(H, wm_lbuttonup,MK_LBUTTON,MAKELONG(x,y));
    6.   a:=GetLastError;
    7.   Edit2.Text:=IntToStr(a);
    работает для мозилы однако не работает для моей игры). поэтому я и решил отследить что винда шлёт игре при нажатии и движения мыши.буду очень благодарен если кто поможет.
     
  2. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    Для этого есть легальные механимы фильтрации, называются хуками.
     
  3. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    SetWindowsHookEx
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    xxDreYxx
    Игра случаем не на флеше сделана?
     
  5. xxDreYxx

    xxDreYxx New Member

    Публикаций:
    0
    Регистрация:
    3 май 2011
    Сообщения:
    3
    спасибо буду разбираться.
    valterg нет это EVE online насколько я знаю она написана на питоне
     
  6. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    xxDreYxx
    кхе, при чем тут питон? у тебя в браузере флеш или хтмл? На чем на сервере сделано, мало волнует )
     
  7. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    xxDreYxx
    Игра имеет собственный клиент, наверняка там есть защита от ботов - соотвественно перехват и эмуляция клавы и мыши будет не таким простым делом :) Т.е первое что надо поверить, что хукает сам клиент и отсюда плясать.
     
  8. xxDreYxx

    xxDreYxx New Member

    Публикаций:
    0
    Регистрация:
    3 май 2011
    Сообщения:
    3
    valterg
    кстати удивительно но клавиши клиент эмулирует нормалльно
    Код (Text):
    1.   H:=FindWindow(Nil,'EVE');
    2.   Edit1.Text:=IntToStr(H);
    3.   postmessage(H, WM_KEYDOWN, VK_F10, 0 );
    4.   PostMessage(H, WM_KEYUP, VK_F10, 0 );
    5.   a:=GetLastError;
    6.   Edit2.Text:=IntToStr(a);
    работает отлично. Кстати похоже клиент не принимает координаторы мыши от сообщения wm_lbuttonup а снимает их сам. т.к. код
    Код (Text):
    1. H:=FindWindow(Nil,'EVE');
    2.   Edit1.Text:=IntToStr(H);
    3.   SetCursorPos(100,150)    ;
    4.   PostMessage(H, WM_LBUTTONDOWN,MK_LBUTTON,0);
    5.   PostMessage(H, wm_lbuttonup,MK_LBUTTON,0);
    6.   a:=GetLastError;
    7.   Edit2.Text:=IntToStr(a);
    работает именно так как мне надо. То есть наводит мышь на нужную кнопку и нажимает её. Но меня такой вариант не устраивает ).
    Буду очень благодарен благодарен если кто-то подкинет идею как решить эту проблему.
    Извиняюсь что завёл вас в заблуждение с мозилой у игры есть собственный клиент.
     
  9. dinoweb

    dinoweb Дмитрий

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    129
    Адрес:
    Россия. Красноярск
    Может быть перехват функции GetCursorPos поможет?