Хуки Windows

Тема в разделе "MS Visual C++", создана пользователем Guest, 27 дек 2003.

Статус темы:
Закрыта.
  1. Guest

    Guest Гость

    Хуки Windows
    Итак, у меня проблема с WH_CALLWNDPROC и WH_MSGFILTER хуками.
    Вот функция моего хука:
    Код (Text):
    LRESULT CALLBACK HookProc(DWORD nCode,WPARAM wParam,LPARAM lParam)
    {
      CallNextHookEx(hHook,nCode,wParam,lParam);
    return 0;
    }


    Вот функция установливающая Hook:
    void Install()
    {
     hInstance=GetModuleHandle(NULL);// Когда я ставлю вместо hInstance ноль то проблема тоже остаётся.
     hHook=SetWindowsHookEx(WH_MSGFILTER,(HOOKPROC)&HookProc,hInstance,0);
    }

    И функция убирающая Hook:

    void Unistall()
    {
    UnhookWindowsHookEx(hHook);
    }

    Ну и DLL Main:

    BOOL APIENTRY DllMain( HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
    {
     return TRUE;
    }
    Так вот: Этот хук как вы заметили отлавливает сообщения выбора пункта меню (ну и ещё несколько событий) во всей системе.
    Но когда я ставлю этот хук и нажимаю скажем в калькуляторе на меню, то у меня выскакивает ошибка:
    "Программа выполнила недопустимую операцию и будет закрыта" и закрывется калькулятор.
    Когда я ставлю хук WH_KEYBOARD, то всё нормально работает!
    Если это имеет значения я пишу под Win95 с установленным IE 5.0
    В чём дело?
     
  2. Гость

    Guest
    Вои цитата из MSDN:
    Собственно они настоятельно рекомендуют возвращать то, что вернул CallNextHookEx. А ты, судя по коду, возвращаешь 0.

    Гуд бай ламерzzzz ^)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей