Здравствуйте!
Столкнулся со странной проблемой — при установке хука на события мыши (WH_MOUSE, глобальный хук, реализован в DLL) приложение, которое ставит хук начинает жутко тормозить, и результат работы хука даже толком и не удается проверить. С хуком клавиатуры (WH_KEYBOARD) такого не происходит. В чем может быть дело?
01.06.05 17:24: Перенесено из 'C/C++. Прикладные вопросы'
Re: Хук на WH_MOUSE
От:
Аноним
Дата:
31.05.05 09:37
Оценка:
Здравствуйте, DimichZubtsov, Вы писали:
DZ>Здравствуйте! DZ>Столкнулся со странной проблемой — при установке хука на события мыши (WH_MOUSE, глобальный хук, реализован в DLL) приложение, которое ставит хук начинает жутко тормозить, и результат работы хука даже толком и не удается проверить. С хуком клавиатуры (WH_KEYBOARD) такого не происходит. В чем может быть дело?
Пришли проект или примерный кусочек кода .scaramancha_hotmail_com
Женя.
DZ>Здравствуйте! DZ>Столкнулся со странной проблемой — при установке хука на события мыши (WH_MOUSE, глобальный хук, реализован в DLL) приложение, которое ставит хук начинает жутко тормозить, и результат работы хука даже толком и не удается проверить. С хуком клавиатуры (WH_KEYBOARD) такого не происходит. В чем может быть дело?
Пиши кусочек кода. На всякий случай не забудь, что поток, ставящий хук, должен иметь цикл обработки сообщений.
Здравствуйте, Кодёнок, Вы писали:
Кё>Интересует другой код, который вызывает процедуру установки хука. Поток, который это делает, имеет message loop?
Не имеет Спасибо за наводку, попробую доделать и отпишу результат.
Re[5]: Хук на WH_MOUSE
От:
Аноним
Дата:
20.07.05 05:42
Оценка:
DZ>Здравствуйте, Кодёнок, Вы писали:
Кё>>Интересует другой код, который вызывает процедуру установки хука. Поток, который это делает, имеет message loop?
DZ>Не имеет Спасибо за наводку, попробую доделать и отпишу результат.
В общем воевал-воевал, но нормального результата так и не добился. "Тормоза" исчезли, но все равно события от мыши приходят как-то по странному — например щелкаешь кнопкой несколько раз, а сообщение в хук-функцию приходит одно, и спустя несколько секунд. В общем сделал через WH_GETMESSAGE — все работает отлично, но вот еще странная проблема — когда активно какое-либо консольное окно соообщения ни от мыши ни от клавиатуры не приходят. Почему?
Здравствуйте, Andrew S, Вы писали:
Кё>>Пиши кусочек кода. На всякий случай не забудь, что поток, ставящий хук, должен иметь цикл обработки сообщений. AS>Откуда такая информация?
Из практики Если не вызывать GetMessage/PeekMessage, мышинные и клавиатурные хуки глючат или тормозят в консольных приложениях, например (w2k/xp).
Кё>>>Пиши кусочек кода. На всякий случай не забудь, что поток, ставящий хук, должен иметь цикл обработки сообщений. AS>>Откуда такая информация?
Кё>Из практики Если не вызывать GetMessage/PeekMessage, мышинные и клавиатурные хуки глючат или тормозят в консольных приложениях, например (w2k/xp).
Как я понимаю, речь идет про глобальные хуки? Как они могут тормозить из-за этого, если выполняются в контексте другого процесса? Насчет LL хуков — там все ясно, для них это необходимое условие. Но обычные — я что то очень сильно сомневаюсь.
Здравствуйте, Andrew S, Вы писали:
Кё>>>>Пиши кусочек кода. На всякий случай не забудь, что поток, ставящий хук, должен иметь цикл обработки сообщений. AS>>>Откуда такая информация?
Кё>>Из практики Если не вызывать GetMessage/PeekMessage, мышинные и клавиатурные хуки глючат или тормозят в консольных приложениях, например (w2k/xp). AS>Как я понимаю, речь идет про глобальные хуки? Как они могут тормозить из-за этого, если выполняются в контексте другого процесса? Насчет LL хуков — там все ясно, для них это необходимое условие. Но обычные — я что то очень сильно сомневаюсь.
Кё>>>Из практики Если не вызывать GetMessage/PeekMessage, мышинные и клавиатурные хуки глючат или тормозят в консольных приложениях, например (w2k/xp). AS>>Как я понимаю, речь идет про глобальные хуки? Как они могут тормозить из-за этого, если выполняются в контексте другого процесса? Насчет LL хуков — там все ясно, для них это необходимое условие. Но обычные — я что то очень сильно сомневаюсь.
Кё>Да, о глобальных. Можешь проверить — тормозят
Да, действительно, похоже на то. Довольно странное поведение csrss — тормозят только окна консоли.