// fijó el gancho
VERIFICAR (CFuncInAPIHook:: Citar como ejemplo () .HookFunction (_T (“user32.dll”), _T (“MessageBoxW”), AfxGetInstanceHandle (), &MyMessageBox (PROC)));
Procedimiento del reemplazo de //
internacional WINAPI MyMessageBox (hWnd de HWND,
lpText de LPCTSTR,
lpCaption de LPCTSTR,
uType de UINT
)
{
¡El indicador de la función de // debe tener la misma convención de llamada que PROC (WINAPI)! ¡Por lo tanto, prepend WINAPI (__stdcall)!
typedef internacional (*MESSAGEBOX_FUNC) de WINAPI (HWND, LPCTSTR, LPCTSTR, UINT);
¡// recupera solamente la dirección de función original una vez!
pFunc estático de MESSAGEBOX_FUNC = (MESSAGEBOX_FUNC) CFuncInAPIHook:: Citar como ejemplo () .RetrieveOriginalAPIFunctionAddress (_T (“user32.dll”), _T (“MessageBoxW”));
AFIRMAR (pFunc);
¿volver el pFunc? ¡(*pFunc) (hWnd, _T (“he enganchado esta llamada! "), lpCaption, uType): 0;
}
// esta llamada será enganchado
:: MessageBox (FALTA DE INFORMACIÓN, _T (""), _T (“título”), MB_OK);
|