From: Giannis Adamopoulos Date: Sat, 14 May 2011 18:17:58 +0000 (+0000) Subject: - Improve user api hook definitions. Add prototype of RegisterUserApiHook for xp X-Git-Tag: backups/icu4ros-bringup@60647~248^2~77 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=9ae5e880c07ea248a51cebe18190258808762c14 - Improve user api hook definitions. Add prototype of RegisterUserApiHook for xp - Add some helper macros svn path=/branches/GSoC_2011/ThemesSupport/; revision=51740 --- diff --git a/include/reactos/undocuser.h b/include/reactos/undocuser.h index 22bd858ee3b..591c1f0ddbc 100644 --- a/include/reactos/undocuser.h +++ b/include/reactos/undocuser.h @@ -116,24 +116,6 @@ HWND WINAPI GetProgmanWindow(VOID); // User api hook // -typedef struct _USERAPIHOOKINFO -{ - DWORD m_size; - LPCWSTR m_dllname1; - LPCWSTR m_funname1; - LPCWSTR m_dllname2; - LPCWSTR m_funname2; -} USERAPIHOOKINFO,*PUSERAPIHOOKINFO; - -typedef enum _UAPIHK -{ - uahLoadInit, - uahStop, - uahShutdown -} UAPIHK, *PUAPIHK; - -typedef DWORD (CALLBACK * USERAPIHOOKPROC)(UAPIHK State, ULONG_PTR Info); - typedef LRESULT(CALLBACK *WNDPROC_OWP)(HWND,UINT,WPARAM,LPARAM,ULONG_PTR,PDWORD); typedef struct _UAHOWP @@ -142,34 +124,61 @@ typedef struct _UAHOWP DWORD Size; } UAHOWP, *PUAHOWP; +#define UAH_HOOK_MESSAGE(uahowp, msg) uahowp.MsgBitArray[msg/8] |= (1 << (msg % 8)); +#define UAH_IS_MESSAGE_HOOKED(uahowp, msg) (uahowp.MsgBitArray[msg/8] & (1 << (msg % 8))) +#define UAHOWP_MAX_SIZE WM_USER/8 + typedef struct tagUSERAPIHOOK { - DWORD size; - WNDPROC DefWindowProcA; - WNDPROC DefWindowProcW; - UAHOWP DefWndProcArray; - FARPROC GetScrollInfo; - FARPROC SetScrollInfo; - FARPROC EnableScrollBar; - FARPROC AdjustWindowRectEx; - FARPROC SetWindowRgn; + DWORD size; + WNDPROC DefWindowProcA; + WNDPROC DefWindowProcW; + UAHOWP DefWndProcArray; + FARPROC GetScrollInfo; + FARPROC SetScrollInfo; + FARPROC EnableScrollBar; + FARPROC AdjustWindowRectEx; + FARPROC SetWindowRgn; WNDPROC_OWP PreWndProc; WNDPROC_OWP PostWndProc; - UAHOWP WndProcArray; + UAHOWP WndProcArray; WNDPROC_OWP PreDefDlgProc; WNDPROC_OWP PostDefDlgProc; - UAHOWP DlgProcArray; - FARPROC GetSystemMetrics; - FARPROC SystemParametersInfoA; - FARPROC SystemParametersInfoW; - FARPROC ForceResetUserApiHook; - FARPROC DrawFrameControl; - FARPROC DrawCaption; - FARPROC MDIRedrawFrame; - FARPROC GetRealWindowOwner; + UAHOWP DlgProcArray; + FARPROC GetSystemMetrics; + FARPROC SystemParametersInfoA; + FARPROC SystemParametersInfoW; + FARPROC ForceResetUserApiHook; + FARPROC DrawFrameControl; + FARPROC DrawCaption; + FARPROC MDIRedrawFrame; + FARPROC GetRealWindowOwner; } USERAPIHOOK, *PUSERAPIHOOK; +typedef enum _UAPIHK +{ + uahLoadInit, + uahStop, + uahShutdown +} UAPIHK, *PUAPIHK; + +typedef BOOL(CALLBACK *USERAPIHOOKPROC)(UAPIHK State, PUSERAPIHOOK puah); + +typedef struct _USERAPIHOOKINFO +{ + DWORD m_size; + LPCWSTR m_dllname1; + LPCWSTR m_funname1; + LPCWSTR m_dllname2; + LPCWSTR m_funname2; +} USERAPIHOOKINFO,*PUSERAPIHOOKINFO; + +#if (WINVER == _WIN32_WINNT_WINXP) +BOOL WINAPI RegisterUserApiHook(HINSTANCE hInstance, USERAPIHOOKPROC CallbackFunc); +#elif (WINVER == _WIN32_WINNT_WS03) BOOL WINAPI RegisterUserApiHook(PUSERAPIHOOKINFO puah); +#endif + BOOL WINAPI UnregisterUserApiHook(VOID); #endif