//***************************************************************************** // // 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);