Консультация № 140110
17.07.2008, 09:19
0.00 руб.
0 3 1
Не получается поставить глобальный хук на события мыши (да и на клавиши тоже) :(
В форме VBA Excell ставится хук:
hHook = SetWindowsHookEx(WH_JOURNALRECORD, AddressOf HookProc, 0, 0)
но процедура HookProc из модуля не вызывается.
В чем засада?

Приложение:
hHook = SetWindowsHookEx(WH_JOURNALRECORD, AddressOf HookProc, 0, 0)

Обсуждение

давно
Профессионал
848
1596
17.07.2008, 14:47
общий
>>Каждый десятый вопрос на любой VB-конференции звучит приблизительно так: "Как заставить мое приложение реагировать на горячие клавиши, если ни одна его форма не имеет фокуса?" Есть несколько способов решить эту проблему и все они кривые. За исключением одного единственного: надо поставить глобальный хук на клавиатуру (keyboard system wide hook). Однако здесь возникает одна проблема. Вызов функции SetWindowsHookExA должен размещаться в стандартной dll, потому что хук должен инсталлироваться во все активные процессы в системе. Visual Basic, к сожалению, позволяет создавать только ActiveX DLL. Это не совсем одно и то же, так как приложение должно создать экземпляр объекта из класса ActiveX DLL, прежде чем манипулировать его свойствами и методами. Что же делать? Вывод напрашивается печальный, так как он совсем не патриотичный. Нужно писать стандартную dll на каком-нибудь другом языке.
-------------------
Пример реализации DLL интересует? ;-)
Неизвестный
17.07.2008, 14:53
общий
Да, было бы интересно
давно
Профессионал
848
1596
17.07.2008, 15:14
общий
это ответ
Здравствуйте, Денисов Сергей Иванович!
К ответу прикрепляю файл с примером.
Форма ответа