|
|
//*****************************************************************************
//
// HOOKS -
//
// Header file for 32bit stubs and thunks of 16bit hooks
//
//
// 01-07-92 NanduriR Created.
//
//*****************************************************************************
typedef LONG (APIENTRY *HKPROC)(INT, LONG, LONG);
typedef struct { HANDLE hMod; // Module handle
INT cHookProcs; // Total Number of thunk stubs.
} HOOKPERPROCESSDATA, FAR *LPHOOKPERPROCESSDATA;
typedef struct { BYTE iIndex; // array index;
BYTE InUse; // TRUE if this Proc32 is already hooked
HAND16 hMod16; // 16bit HookDLL module handle
HANDLE hMod; // Modulehande of Thunk Hook Dll
HKPROC Proc32; // 32bit HookProc stub
INT iHook; // type of Hook
DWORD Proc16; // actual 16bit HookProc
INT TaskId; // id of task that callled setwindowshook
HHOOK hHook; // handle returned by SetWindowHookEx
} HOOKSTATEDATA, FAR *LPHOOKSTATEDATA;
typedef struct { INT nCode; // the input params to a hook func.
LONG wParam; LONG lParam; } HOOKPARAMS, FAR *LPHOOKPARAMS;
#define PUTMSGFILTER16(pMsg16,lpMsg) {\
STOREWORD(pMsg16->hwnd, GETHWND16((lpMsg)->hwnd));\ STOREWORD(pMsg16->message, (lpMsg)->message);\ STOREWORD(pMsg16->wParam, (lpMsg)->wParam);\ STORELONG(pMsg16->lParam, (lpMsg)->lParam);\ STORELONG(pMsg16->time, (lpMsg)->time);\ STOREWORD(pMsg16->pt.x, (lpMsg)->pt.x);\ STOREWORD(pMsg16->pt.y, (lpMsg)->pt.y);\ }
#define GETMSGFILTER16(pMsg16,lpMsg) {\
(lpMsg)->hwnd = HWND32(FETCHWORD(pMsg16->hwnd));\ (lpMsg)->message = FETCHWORD(pMsg16->message);\ (lpMsg)->wParam = FETCHWORD(pMsg16->wParam);\ (lpMsg)->lParam = FETCHLONG(pMsg16->lParam);\ (lpMsg)->time = FETCHLONG(pMsg16->time);\ (lpMsg)->pt.x = FETCHSHORT(pMsg16->pt.x);\ (lpMsg)->pt.y = FETCHSHORT(pMsg16->pt.y);\ }
#define PUTMOUSEHOOKSTRUCT16(pMHStruct16,lpMHStruct) {\
STOREWORD(pMHStruct16->pt.x, (lpMHStruct)->pt.x);\ STOREWORD(pMHStruct16->pt.y, (lpMHStruct)->pt.y);\ STOREWORD(pMHStruct16->hwnd, GETHWND16((lpMHStruct)->hwnd));\ STOREWORD(pMHStruct16->wHitTestCode, (lpMHStruct)->wHitTestCode);\ STORELONG(pMHStruct16->dwExtraInfo, (lpMHStruct)->dwExtraInfo);\ }
#define GETMOUSEHOOKSTRUCT16(pMHStruct16,lpMHStruct) {\
(lpMHStruct)->pt.x = FETCHSHORT(pMHStruct16->pt.x);\ (lpMHStruct)->pt.y = FETCHSHORT(pMHStruct16->pt.y);\ (lpMHStruct)->hwnd = HWND32(FETCHWORD(pMHStruct16->hwnd));\ (lpMHStruct)->wHitTestCode = FETCHWORD(pMHStruct16->wHitTestCode);\ (lpMHStruct)->dwExtraInfo = FETCHLONG(pMHStruct16->dwExtraInfo);\ }
// afterdark 3.0 compares the t1=lpeventmsg->time with t2=getcurrenttime().
// physically t2 > t1 always - we truncate t2 to a multiple of 64 and
// thus sometimes t2 < t1 (numerically) which confuses the app and
// triggers the screen saver. So we do identical truncation here.
// No compatibility flag is used
// - nanduri
#define PUTEVENTMSG16(pEventMsg16,lpEventMsg) {\
STOREWORD(pEventMsg16->message, (lpEventMsg)->message);\ STOREWORD(pEventMsg16->paramL, (lpEventMsg)->paramL);\ STOREWORD(pEventMsg16->paramH, (lpEventMsg)->paramH);\ STORELONG(pEventMsg16->time, GRAINYTICS((lpEventMsg)->time));\ }
#define PUTCBTACTIVATESTRUCT16(pCbtAStruct16,lpCbtAStruct) {\
STOREWORD(pCbtAStruct16->fMouse, (lpCbtAStruct)->fMouse);\ STOREWORD(pCbtAStruct16->hWndActive, (GETHWND16((lpCbtAStruct)->hWndActive)));\ }
#define GETCBTACTIVATESTRUCT16(pCbtAStruct16,lpCbtAStruct) {\
(lpCbtAStruct)->fMouse = FETCHWORD(pCbtAStruct16->fMouse);\ (lpCbtAStruct)->hWndActive = HWND32(FETCHWORD(pCbtAStruct16->hWndActive));\ }
LONG APIENTRY WU32StdHookProc(INT nCode, LONG wParam, LONG lParam, INT iFunc); LONG APIENTRY WU32SubStdHookProc01(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc02(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc03(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc04(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc05(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc06(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc07(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc08(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc09(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc10(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc11(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc12(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc13(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc14(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc15(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc16(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc17(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc18(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc19(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc20(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc21(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc22(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc23(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc24(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc25(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc26(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc27(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc28(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc29(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc30(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc31(INT nCode, LONG wParam, LONG lParam); LONG APIENTRY WU32SubStdHookProc32(INT nCode, LONG wParam, LONG lParam);
BOOL W32InitHookState(HANDLE hMod); BOOL W32GetNotInUseHookStateData(LPHOOKSTATEDATA lpData); BOOL W32GetHookStateData(LPHOOKSTATEDATA lpData); BOOL W32SetHookStateData(LPHOOKSTATEDATA lpData); BOOL W32GetThunkHookProc(INT iHook, DWORD Proc16, LPHOOKSTATEDATA lpData); HHOOK W32FreeHHook(INT iHook, DWORD Proc16); HHOOK W32FreeHHookOfIndex(INT iFunc); BOOL W32GetHookParams(LPHOOKPARAMS lpHookParams); LONG ThunkCallWndProcHook(INT nCode, LONG wParam, LPCWPSTRUCT lpCwpStruct, LPHOOKSTATEDATA lpHSData); LONG ThunkCbtHook(INT nCode, LONG wParam, LONG lParam, LPHOOKSTATEDATA lpHSData); LONG ThunkKeyBoardHook(INT nCode, LONG wParam, LONG lParam, LPHOOKSTATEDATA lpHSData); LONG ThunkMsgFilterHook(INT nCode, LONG wParam, LPMSG lpMsg, LPHOOKSTATEDATA lpHSData); LONG ThunkJournalHook(INT nCode, LONG wParam, LPEVENTMSG lpEventMsg, LPHOOKSTATEDATA lpHSData); LONG ThunkDebugHook(INT nCode, LONG wParam, LONG lParam, LPHOOKSTATEDATA lpHSData); LONG ThunkMouseHook(INT nCode, LONG wParam, LPMOUSEHOOKSTRUCT lpMHStruct, LPHOOKSTATEDATA lpHSData); LONG ThunkShellHook(INT nCode, LONG wParam, LONG lParam, LPHOOKSTATEDATA lpHSData);
LONG APIENTRY WU32StdDefHookProc(INT nCode, LONG wParam, LONG lParam, INT iFunc); VOID W32UnhookHooks( HAND16 hMod16, BOOL fQueue ); BOOL W32FreeOwnedHooks(INT iTaskId); INT W32IsDuplicateHook(INT iHook, DWORD Proc16, INT TaskId);
LONG ThunkCallWndProcHook16(INT nCode, LONG wParam, VPVOID lpCwpStruct, LPHOOKSTATEDATA lpHSData); LONG ThunkCbtHook16(INT nCode, LONG wParam, VPVOID lParam, LPHOOKSTATEDATA lpHSData); LONG ThunkKeyBoardHook16(INT nCode, LONG wParam, LONG lParam, LPHOOKSTATEDATA lpHSData); LONG ThunkMsgFilterHook16(INT nCode, LONG wParam, VPVOID lpMsg, LPHOOKSTATEDATA lpHSData); LONG ThunkJournalHook16(INT nCode, LONG wParam, VPVOID lpEventMsg, LPHOOKSTATEDATA lpHSData); LONG ThunkDebugHook16(INT nCode, LONG wParam, LONG lParam, LPHOOKSTATEDATA lpHSData); LONG ThunkMouseHook16(INT nCode, LONG wParam, VPVOID lpMHStruct, LPHOOKSTATEDATA lpHSData); LONG ThunkShellHook16(INT nCode, LONG wParam, LONG lParam, LPHOOKSTATEDATA lpHSData); DWORD W32GetHookDDEMsglParam(VOID); VOID GetEventMessage16(PEVENTMSG16 pEventMsg16, LPEVENTMSG lpEventMsg);
|