Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 293
от 25.08.2006, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 347, Экспертов: 27
В номере:Вопросов: 1, Ответов: 1


Вопрос № 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное