перехват Windows Message

Discussion in 'WASM.WIN32' started by xxDreYxx, Jul 3, 2011.

  1. xxDreYxx

    xxDreYxx New Member

    Blog Posts:
    0
    Joined:
    May 3, 2011
    Messages:
    3
    собственно нужно отслеживать все сообщения которые шлёт винда определённому окну.мне нужно просто посмотреть что винда шлёт а не подменять собщения.у меня стоит Windows XP. буду очень благодарен если поможите.
    P.S. отвечаю зачем это нужно моей основной целью является эмуляция работы мыши в неактивном окне конкретно в игре.
    Code (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

    Blog Posts:
    0
    Joined:
    Jun 2, 2011
    Messages:
    449
    Для этого есть легальные механимы фильтрации, называются хуками.
     
  3. qwe8013

    qwe8013 New Member

    Blog Posts:
    0
    Joined:
    May 28, 2009
    Messages:
    198
    SetWindowsHookEx
     
  4. valterg

    valterg Active Member

    Blog Posts:
    0
    Joined:
    Aug 19, 2004
    Messages:
    2,105
    xxDreYxx
    Игра случаем не на флеше сделана?
     
  5. xxDreYxx

    xxDreYxx New Member

    Blog Posts:
    0
    Joined:
    May 3, 2011
    Messages:
    3
    спасибо буду разбираться.
    valterg нет это EVE online насколько я знаю она написана на питоне
     
  6. FatMoon

    FatMoon New Member

    Blog Posts:
    0
    Joined:
    Nov 28, 2002
    Messages:
    954
    Location:
    Russia
    xxDreYxx
    кхе, при чем тут питон? у тебя в браузере флеш или хтмл? На чем на сервере сделано, мало волнует )
     
  7. valterg

    valterg Active Member

    Blog Posts:
    0
    Joined:
    Aug 19, 2004
    Messages:
    2,105
    xxDreYxx
    Игра имеет собственный клиент, наверняка там есть защита от ботов - соотвественно перехват и эмуляция клавы и мыши будет не таким простым делом :) Т.е первое что надо поверить, что хукает сам клиент и отсюда плясать.
     
  8. xxDreYxx

    xxDreYxx New Member

    Blog Posts:
    0
    Joined:
    May 3, 2011
    Messages:
    3
    valterg
    кстати удивительно но клавиши клиент эмулирует нормалльно
    Code (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 а снимает их сам. т.к. код
    Code (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 Дмитрий

    Blog Posts:
    0
    Joined:
    Oct 12, 2005
    Messages:
    129
    Location:
    Россия. Красноярск
    Может быть перехват функции GetCursorPos поможет?