/* * Windows hook definitions * * Copyright 1994 Alexandre Julliard */ #ifndef HOOK_H #define HOOK_H #include "windows.h" #include "user.h" /* Hook data (pointed to by a HHOOK) */ typedef struct { HHOOK next; /* Next hook in chain */ HOOKPROC proc; /* Hook procedure */ short id; /* Hook id (WH_xxx) */ HTASK htask; /* Task owning this hook */ } HOOKDATA; #define FIRST_HOOK WH_MSGFILTER #define LAST_HOOK WH_SHELL #define SYSTEM_HOOK(id) (systemHooks[(id)-FIRST_HOOK]) #define TASK_HOOK(id) (taskHooks[(id)-FIRST_HOOK]) #define INTERNAL_CALL_HOOK(hhook,code,wparam,lparam) \ ((hhook) ? CallHookProc(((HOOKDATA*)(hhook))->proc,code,wparam,lparam) : 0) #define CALL_SYSTEM_HOOK(id,code,wparam,lparam) \ INTERNAL_CALL_HOOK(SYSTEM_HOOK(id),code,wparam,lparam) #define CALL_TASK_HOOK(id,code,wparam,lparam) \ INTERNAL_CALL_HOOK(TASK_HOOK(id),code,wparam,lparam) extern DWORD CallHookProc( HOOKPROC func, short code, WPARAM wParam, LPARAM lParam ); /* callback.c */ extern HHOOK systemHooks[]; extern HHOOK taskHooks[]; #endif /* HOOK_H */