![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| ldr12 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 9.2.2007 Репутация: нет Всего: 1 |
Столкнулся со следующей проблемой.
Создаю с помощью 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() - не помогает. Да и почему же тогда работает в главном потоке, и чем мешает хуку запуск дочерних потоков? Что здесь можно сделать? Это сообщение отредактировал(а) ldr12 - 9.2.2007, 15:15 |
|||
|
||||
| Aleksandor |
|
|||
|
Практик ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 22.11.2005 Где: россия, зеленогра д Репутация: 10 Всего: 12 |
Попробую помочь, если сбросишь исходник
-------------------- Call out Gouranga be happy!!! Gouranga Gouranga Gouranga .... That which brings the highest happiness!! |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |