хэндл окна

Тема в разделе "WASM.BEGINNERS", создана пользователем zxcc, 23 июн 2007.

  1. zxcc

    zxcc New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2006
    Сообщения:
    172
    Подскажите как получить хэнд любого окна.
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    WindowFromPoint - под курсором
    EnumWindows - перечисляет все top-level окна
     
  3. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    только WindowFromPoint не возвращает хендлы на hidden или disabled окна
     
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    для этого можно воспользоваться перехватом сообщений от мыши.
     
  5. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ужс. а это как?
     
  6. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    через SetWindowsHookEx / WH_MOUSE.
     
  7. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Было дело. Я тоже страдал поиском одного окна, ну типа хотел крякнуть прогу. Методика тупая но зато все окна просмотришь. Проверяешь все числа от 1 до 65535 на хендл окна IsWindow, если это хендл окна, то юзаешь его в своих целях.
     
  8. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    через EnumWindows/EnumChildWindows получилось бы если не быстрее, то более дзенски :)
     
  9. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    ну допустим, хук, а дальше что? сгенерировать mouse_event и посмотреть, кто его первым поймает? а если окошко будет hidden или layered? сообщения же вроде проходят сквоь них?
     
  10. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    нет, я имел ввиду замену WindowFromPoint.
    при наведении курсора на окно функция, обрабатывающая перехваченные сообщения получит указатель на структуру MOUSEHOOKSTRUCT, которая будет содержать и хендл окна.
    например:
    Код (Text):
    1. MouseProc proc nCode:DWORD, wParam:DWORD, lParam:DWORD
    2.  invoke CallNextHookEx, hHook, nCode, wParam, lParam
    3.  mov edx, lParam
    4.  assume edx:PTR MOUSEHOOKSTRUCT
    5.  ; в [edx].hwnd - искомый хендл
    6.  assume edx:nothing
    7.  xor eax, eax
    8.  ret
    9. MouseProc endp
    10. ...
    11. invoke SetWindowsHookEx, WH_MOUSE, addr MouseProc, hInstance, 0
     
  11. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    RamMerLabs
     
  12. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    ой! моя глюканула... этот способ не пройдёт...