// Ustawianie the haczyk
WERYFIKOWAĆ (CFuncInAPIHook:: Przykład () .HookFunction (_T ("user32.dll"), _T ("MessageBoxW"), AfxGetInstanceHandle (), (PROC) &MyMessageBox));
// Zastępstwo procedura
int WINAPI MyMessageBox (HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
)
{
// Funkcja pointer musieć ten sam konwencja PROC (WINAPI)! Tym samym, prepend WINAPI (__stdcall)!
typedef int (WINAPI *MESSAGEBOX_FUNC) (HWND, LPCTSTR, LPCTSTR, UINT);
// Tylko odzyskiwać the oryginalny funkcja adres oryginalny!
statyczny MESSAGEBOX_FUNC pFunc = (MESSAGEBOX_FUNC) CFuncInAPIHook:: Przykład () .RetrieveOriginalAPIFunctionAddress (_T ("user32.dll"), _T ("MessageBoxW"));
ZAPEWNIAĆ (pFunc);
wracać pFunc? (*pFunc) (hWnd, _T ("I haczyć ten wezwanie! "), lpCaption, uType): (0);
}
// Ten wezwanie haczyć
:: MessageBox (NIEOBOWIĄZUJĄCY, _T (""), _T ("Tytuł"), MB_OK);
|