Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
BigGameHunter3.cpp
Abstract:
BGH calls GetWindowLong() to get a window procedure and subsequently does not call CallWindowProc() with the value returned from GetWindowLong(). This patch calls GetWindowLongW( ), which returns the window procedure. Notes:
This is an app specific shim. Making it general will require generating a stub function that just uses CallWindowProc for every returned handle. Too much work, not enough gain.
History:
03/16/2000 prashkud Created
--*/
#include "precomp.h"
IMPLEMENT_SHIM_BEGIN(BigGameHunter3) #include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN APIHOOK_ENUM_ENTRY(GetWindowLongA) APIHOOK_ENUM_END
/*++
This function intercepts GetWindowLong( ), checks the nIndex for GWL_WNDPROC and if it is,calls GetWindowLongW( ). Otherwise, it calls GetWindowLongA( )
--*/
LONG APIHOOK(GetWindowLongA)( HWND hwnd, int nIndex ) { LONG lRet;
// Apply the modification only if the App wants a WindowProc.
if (nIndex == GWL_WNDPROC) { lRet = GetWindowLongW(hwnd, nIndex); } else { lRet = ORIGINAL_API(GetWindowLongA)(hwnd, nIndex); }
return lRet; }
/*++
Register hooked functions
--*/
HOOK_BEGIN APIHOOK_ENTRY(USER32.DLL, GetWindowLongA) HOOK_END
IMPLEMENT_SHIM_END
|