Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с использованием хука, помогите плиз 
:(
    Опции темы
sabantui
Дата 18.3.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 18.3.2006

Репутация: нет
Всего: нет



Всем доброго времени суток. У меня такая проблема. есть следующий кусок кода 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
и еще, по каким-то странным обстоятельствам несколько раз подряд все работало очень хорошо...
ЗЫ блин... все форматироваине потерялось smile ... я не виноват...

PM MAIL   Вверх
Earnest
Дата 20.3.2006, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Виноват-виноват: нужно пользоваться кнопкой "код", а еще неплохо бы прочесть правила форума, перед тем, как туда писать.
По сути вопроса: твою проблему нужно решать с отладчиком в зубах: может ты нулем свой указатель и инициализируешь?


--------------------
...
PM   Вверх
Fin
Дата 20.3.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: 1
Всего: 10



Покажи, как ты вызываеш функцию DoHook. И как определён тип ExecutableFunction.


--------------------
Пролетал мимо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.