G
Guest
Хуки Windows
Итак, у меня проблема с WH_CALLWNDPROC и WH_MSGFILTER хуками.
Вот функция моего хука:
Так вот: Этот хук как вы заметили отлавливает сообщения выбора пункта меню (ну и ещё несколько событий) во всей системе.
Но когда я ставлю этот хук и нажимаю скажем в калькуляторе на меню, то у меня выскакивает ошибка:
"Программа выполнила недопустимую операцию и будет закрыта" и закрывется калькулятор.
Когда я ставлю хук WH_KEYBOARD, то всё нормально работает!
Если это имеет значения я пишу под Win95 с установленным IE 5.0
В чём дело?
Итак, у меня проблема с WH_CALLWNDPROC и WH_MSGFILTER хуками.
Вот функция моего хука:
Код:
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
В чём дело?