| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > проблема с использованием хука |
| Автор: sabantui 18.3.2006, 12:54 |
| Всем доброго времени суток. У меня такая проблема. есть следующий кусок кода dll-ки для хука ---------------------------------------------------------------------------------------------------------------------------------------- ExecutableFunction Function; HHOOK hMouseHook; HOOK_API void DoHook(ExecutableFunction _Function) { Function = _Function; hMouseHook = SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseFunction, ::LoadLibrary("Hook.dll") , 0); } HOOK_API void DoUnhook() { UnhookWindowsHookEx(hMouseHook); } LRESULT CALLBACK MouseFunction(int _Code, WPARAM _wParam, LPARAM _lParam) { if (_Code >= 0) { LPMOUSEHOOKSTRUCT MouseHookParam = (MOUSEHOOKSTRUCT*) _lParam; if (MouseHookParam->pt.y == 0 && MouseHookParam->pt.x == 0) { try { Function(); } catch(...) { MessageBox(NULL, "мдя... :-(((", "инфа к размышлению", MB_OK); } return 1; } } return ::CallNextHookEx(hMouseHook, _Code, _wParam, _lParam); } --------------------------------------------------------------------------------------------------------------------------------------------- проблема в том, что в функции MouseFunction, обработчеке перехватываемых от мыши сообщений, указатель Function на функцию почемуто равен NULL, хотя в методе DoHook я его инициирую. Что не так? Добавлено @ 12:57 и еще, по каким-то странным обстоятельствам несколько раз подряд все работало очень хорошо... ЗЫ блин... все форматироваине потерялось |
| Автор: Earnest 20.3.2006, 17:10 |
| Виноват-виноват: нужно пользоваться кнопкой "код", а еще неплохо бы прочесть правила форума, перед тем, как туда писать. По сути вопроса: твою проблему нужно решать с отладчиком в зубах: может ты нулем свой указатель и инициализируешь? |
| Автор: Fin 20.3.2006, 21:14 |
| Покажи, как ты вызываеш функцию DoHook. И как определён тип ExecutableFunction. |