JournalRecord хук виснет в потоке

Тема в разделе "WASM.WIN32", создана пользователем ldr, 9 фев 2007.

  1. ldr

    ldr New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    5
    Столкнулся со следующей проблемой.

    Создаю с помощью CreateThread() поток, в котором впоследствии вызываю установку хука при помощи SetWindowsHookEx с параметром WH_JOURNALRECORD. За установкой хука следует стандартный цикл обработки очереди сообщений потока GetMessage/TranslateMessage/DispatchMessage.

    Проблема в том, что если хук ставится в главном потоке процесса, при отсутствии иных запущенных потоков - все работает превосходно. Если же до/после установки хука создается другой поток - все намертво зависает до нажатия Ctrl+Alt+Del.

    Пробовал блокирующий GetMessage заменять неблокирующим PeekMessage - все то же самое - данная функция виснет намертво.

    Перепробовал все возможные параметры CreateThread/SetWindowsHookEx/GetMessage - к должному результату не привело. Либо все виснет, либо не работает хук.

    Опытным путем установил, что если между SetWindowsHookEx и GetMessage/PeekMessage поставить вызов MessageBox, который закрывается потом обычным щелчком мыши или нажатием Enter - то GetMessage начинает работать как ни в чем ни бывало и все потоки функционируют нормально.

    Напрашивается мысль, что GetMessage необходимо в самом начале работы некое сообщение, вроде щелчка мыши или нажатия клавиши, адресованной вызывающему потоку? Пробовал вставлять туда keybd_event(), mouse_event(), Sleep() - не помогает. Да и почему же тогда работает в главном потоке, и чем мешает хуку запуск дочерних потоков?

    Что здесь можно сделать?
     
  2. wasmer

    wasmer New Member

    Публикаций:
    0
    Регистрация:
    19 янв 2007
    Сообщения:
    104
    может просто поток засыпает? jdb показывает информацию о состоянии потока SoftIce не знаю
     
  3. ldr

    ldr New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    5
    Все выяснилось, при запуске в отладчике IDE виснет :)
    При запуске двойным щелчком все хорошо.
     
  4. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Интересно, а в чём ты пишешь?