![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| kiLLProg |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.10.2008 Репутация: нет Всего: нет |
Всем привет.
Пишу программу, которая перехватывает клики мыши и ведёт протокол нажатий в Memo. Сообщения перехватывает хук в ДЛЛке, но не могу переправить события кликов в управляющее приложение, которое загружает хук. Помогите исправит эту проблему. Заранее благодарен. Код В ДЛЛ:
Сообщения доходят до приложения(при PostMessage(main_wind, WM_CLOSE, 0, 0) прога подвисает), возможно я просто неправильно их обрабатываю. А обрабатываю эти сообщения так:
|
||||
|
|||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 5 Всего: 95 |
1) Мне почему-то кажется, что сообщение с номером 1 системой будет понято неправильно...
2) глобальный мышиный хук WH_MOUSE_LL можно ставить и внутри своего приложения, его незачем пихать в dll (если нет других противопоказаний). Вывод: тебе надо внимательнее почитать про принцип работы системных сообщений и про хуки... -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| kiLLProg |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.10.2008 Репутация: нет Всего: нет |
Из-за большого числа комментариев проге, тебе должно было понятно, что пробовал я так и сяк. Плюс еще, событие двойного клика перехватывает только хук в дЛЛ. Я пробовал и без длл, но я хочу нормально разобраться postMessag"ем.
|
|||
|
||||
| 586 |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
Глобальные переменные опасны при многопоточности. Определи эту переменную ВНУТРИ функции MouseHook.
замени на
замени на
код ловушки:
Это сообщение отредактировал(а) 586 - 1.10.2008, 19:23 |
||||||||
|
|||||||||
| kiLLProg |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.10.2008 Репутация: нет Всего: нет |
Спасибо за ответ! Реально, чудесным образом заработало как надо! Изменил код ДЛЛ на ваш и код обработчика то же. Но ваш обработчик сообщений не обрабатывал события от хука как и у меня. Я мутил со структурой msg. Получал координати курсора, а потом решил просматривать wParamы. Раньше это не прокатывало, но изменив код моей дЛЛ на ваш, все заработало.
Код в приложении:
Код в ДЛЛ:
Спасибо и за такое решение проблемы. Но я бы хотел разобраться с разработчиком, вроде все логично, но что то там не так. Вот исходник моей проги по глобальному перехвату координат курсора и кликов мыши. Буду ждать ответов. Присоединённый файл ( Кол-во скачиваний: 9 )
My_hook_mouse.rar 19,42 Kb |
||||
|
|||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
Перехватывать оконные сообщения можно по-разному...
Присоединённый файл ( Кол-во скачиваний: 15 )
hook_test.rar 19,55 Kb |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: -1 Всего: 14 |
||||
|
||||
![]()
|
| Правила форума "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. |