Вопрос № 52607: Здравствуйте, уважаемые эксперты.
Рассмотрите этот проект созданый в VC7:
http://neosapient.narod.ru/problem/MouseHook.rar
Пытаюсь поставить хук на мышь. При нажатии на левую кнопку мыши, в ловушку для WH_MOUSE_LL попадает сообщение об эт...
Вопрос № 52.607
Здравствуйте, уважаемые эксперты.
Рассмотрите этот проект созданый в VC7:
http://neosapient.narod.ru/problem/MouseHook.rar
Пытаюсь поставить хук на мышь. При нажатии на левую кнопку мыши, в ловушку для WH_MOUSE_LL попадает сообщение об этом. Затем в обработчике получаю позицию курсора мыши. По позиции определяю хендл окна, и это значение записываю в свое окно.
Проблемы следующие:
1) Проект не компилируется, не видит
error C2065: 'WH_MOUSE_LL' : undeclared identifier
error C2065: 'MSLLHOOKSTRUCT' : undeclared identifier
error C2059: syntax error : ')' <-- вытекает из предыдущего
ВОПРОС как исправить.
2) Пробовал создать ловушку для WH_MOUSE. Она отрабатывает для своего окна, так что подозреваю
- процедура отрабатывает один раз
- или много раз, но для своего окна
Приложение:
Отправлен: 19.08.2006, 19:50
Вопрос задал: Zeitgeist (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: InviZ
Здравствуйте, Zeitgeist!
1. Оно и не будет работать, кроме как для своих окон. Для того, чтобы работало со всеми окнами, хук нужно помещать в dll (необходимо создать две экспортируемые функции - одну, устанавливающую хук, вторую - снимающую хук).
2. WH_MOUSEHOOK_LL появилась в NT 4.0, поэтому, если хотите ее использовать, вы должны добавить в код (обязательно до windows.h) строку:
#define _WIN32_WINNT 0x0400
В дальнейшем вам часто придется с этим сталкиваться. Например, если вы будете использовать функции, впервые появившиеся в WinXP, придется вместо 0x0400 указать 0x0501, при этом также будут доступны функции, появившиеся в 4.0 и 2000.
3. В вашем случае можно воспользоваться и просто WH_MOUSE.
Ответ отправил: InviZ (статус: 2-ой класс)
Ответ отправлен: 19.08.2006, 21:43