Witam wszystkich,
w VS2005 napisałem prostego dlla instalującego hooka.
TEST_API int InstallHook(void)
{
hHooks = SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC) GetMsgProc, (HINSTANCE) hInstance, 0);
return (int)hHooks;
}
TEST_API int UnInstallHook(void)
{
return UnhookWindowsHookEx(hHooks);
}
LRESULT CALLBACK GetMsgProc (int code, WPARAM wParam, LPARAM lParam )
{
if (code < 0) return CallNextHookEx(hHooks, code, wParam, lParam);
MSG *lpMsg;
lpMsg = (MSG *) lParam;
//przetwarzanie wiadomosci
return CallNextHookEx(hHooks, code, wParam, lParam);
}
Teraz w aplikacji napisanej w BCB6 ładuję dlla, instaluję hooka przy pomocy InstallHook. Problem w tym, że wyłapywane są wiadomości tylko okna tej aplikacji. Ostatni parametr w SetWindowsHookEx ustawiony na 0 powinien wymusić wyłapywanie wiadomości w całym systemie. Czemu tak się nie dzieje?
Na sieci znalazłem prosty przykład napisany w VB, kiedy użyłem w nim mojego dlla wyłapywane były wszystkie wiadomości. Przykład kompilowałem w Visual Studio.