Хуки в Windows...

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

  1. Andrew_Kuz

    Andrew_Kuz УсамаБэнЛаден

    Публикаций:
    0
    Регистрация:
    5 июл 2007
    Сообщения:
    41
    Адрес:
    планета Земля
    Подскажите пожалуйста, как можно перехватить сообщение, посылаемое виндой к какой нить программе, а именно WM_LBUTTONDOWN

    пробывал перехватывать через хук WH_CALLWNDPROC, ничего не выходит...
    :dntknw:
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Andrew_Kuz
    Например внедрить свой код в адресное пространство "какой нить программе" и из него за'subclass'ить оконную процедуру.
     
  3. Andrew_Kuz

    Andrew_Kuz УсамаБэнЛаден

    Публикаций:
    0
    Регистрация:
    5 июл 2007
    Сообщения:
    41
    Адрес:
    планета Земля
    Ты имелл ввиду типа - invoke SetWindowLong,hwnd,GWL_WNDPROC,eax(адрес на WNDPROC)
    ?????

    да и ваервалл будет ругаться....
     
  4. Andrew_Kuz

    Andrew_Kuz УсамаБэнЛаден

    Публикаций:
    0
    Регистрация:
    5 июл 2007
    Сообщения:
    41
    Адрес:
    планета Земля
    Нужно получить хендл edit box'а, в котором был сделан щелчёк мыши и при этом с удержанной клавишей Ctrl....
     
  5. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Уж не пишешь ли ты что-то вроде AntiPass? В сети предостаточно сорцев на эту тему...
     
  6. Andrew_Kuz

    Andrew_Kuz УсамаБэнЛаден

    Публикаций:
    0
    Регистрация:
    5 июл 2007
    Сообщения:
    41
    Адрес:
    планета Земля
    НЕТ!!!
    Мне надо что-бы по щелчку мыши+Ctrl прога вставляла строчку из буфера в edit бокс какого нить приложения....!
     
  7. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Как вариант - хук WH_MOUSE_LL + WH_KEYBOARD(_LL) / GetKeyState и посылка WM_SETTEXT / SetWindowText
     
  8. Andrew_Kuz

    Andrew_Kuz УсамаБэнЛаден

    Публикаций:
    0
    Регистрация:
    5 июл 2007
    Сообщения:
    41
    Адрес:
    планета Земля
    А что WH_MOUSE_LL - это хук такой есть? (или без _LL?)
    Ну а насчёт вставки текста в едит бокс - эт я смогу...
    мне главное перехватить нажатие LeftbutMouse и получить хендл....
     
  9. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Есть и WH_MOUSE и WH_MOUSE_LL - низкоуровневый хук, навскидку для перехвата нажатий нужен именно низкоуровневый хук. Подробности в msdn.
     
  10. Andrew_Kuz

    Andrew_Kuz УсамаБэнЛаден

    Публикаций:
    0
    Регистрация:
    5 июл 2007
    Сообщения:
    41
    Адрес:
    планета Земля
    roman_pro
    А WH_MOUSE_LL как юзать? как и WH_MOUSE????
     
  11. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Ну WH_MOUSE может быть потоковым и глобальным. Если ставится глобальный хук, то хуковую процедуру необходимо помещать в DLL. WM_MOUSE_LL может быть только глобальным, причём ввиду особенности реализации именно низкоуровневых хуков их процедуру не обязательно помещать в DLL.

    Ну и пару ссылок с примерами исходников:

    http://msdn2.microsoft.com/en-us/library/ms644960.aspx

    http://codeka.com/blogs/index.php?cat=21
     
  12. Andrew_Kuz

    Andrew_Kuz УсамаБэнЛаден

    Публикаций:
    0
    Регистрация:
    5 июл 2007
    Сообщения:
    41
    Адрес:
    планета Земля
    roman_pro Спасибо огромное!!!