ReactOS 0.4.16-dev-1484-g212a1a5
usrapihk.c File Reference
#include <user32.h>
Include dependency graph for usrapihk.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (user32)
 
BOOL WINAPI RealAdjustWindowRectEx (LPRECT, DWORD, BOOL, DWORD)
 
LRESULT WINAPI RealDefWindowProcA (HWND, UINT, WPARAM, LPARAM)
 
LRESULT WINAPI RealDefWindowProcW (HWND, UINT, WPARAM, LPARAM)
 
BOOL WINAPI RealDrawFrameControl (HDC, LPRECT, UINT, UINT)
 
BOOL WINAPI RealGetScrollInfo (HWND, INT, LPSCROLLINFO)
 
int WINAPI RealGetSystemMetrics (int)
 
BOOL WINAPI RealMDIRedrawFrame (HWND, DWORD)
 
INT WINAPI RealSetScrollInfo (HWND, int, LPCSCROLLINFO, BOOL)
 
BOOL WINAPI RealSystemParametersInfoA (UINT, UINT, PVOID, UINT)
 
BOOL WINAPI RealSystemParametersInfoW (UINT, UINT, PVOID, UINT)
 
DWORD WINAPI GetRealWindowOwner (HWND)
 
BOOL WINAPI RealUserDrawCaption (HWND hWnd, HDC hDC, LPCRECT lpRc, UINT uFlags)
 
LRESULT WINAPI DefaultOWP (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, ULONG_PTR lResult, PDWORD pData)
 
BOOL FASTCALL IsMsgOverride (UINT Msg, PUAHOWP puaowpOverride)
 
VOID FASTCALL CopyMsgMask (PUAHOWP Dest, PUAHOWP Src, PVOID hkmsg, DWORD Size)
 
BOOL FASTCALL IsInsideUserApiHook (VOID)
 
BOOL FASTCALL BeginIfHookedUserApiHook (VOID)
 
BOOL WINAPI ForceResetUserApiHook (HINSTANCE hInstance)
 
VOID FASTCALL ResetUserApiHook (PUSERAPIHOOK puah)
 
BOOL FASTCALL EndUserApiHook (VOID)
 
BOOL WINAPI ClearUserApiHook (HINSTANCE hInstance)
 
BOOL WINAPI InitUserApiHook (HINSTANCE hInstance, USERAPIHOOKPROC pfn)
 
BOOL WINAPI MDIRedrawFrame (HWND hWnd, DWORD flags)
 
BOOL WINAPI RegisterUserApiHook (PUSERAPIHOOKINFO puah)
 
BOOL WINAPI UnregisterUserApiHook (VOID)
 

Variables

DWORD gcLoadUserApiHook = 0
 
LONG gcCallUserApiHook = 0
 
DWORD gfUserApiHook = 0
 
HINSTANCE ghmodUserApiHook = NULL
 
USERAPIHOOKPROC gpfnInitUserApi
 
RTL_CRITICAL_SECTION gcsUserApiHook
 
BYTE grgbDwpLiteHookMsg [128]
 
BYTE grgbWndLiteHookMsg [128]
 
BYTE grgbDlgLiteHookMsg [128]
 
USERAPIHOOK guah
 

Function Documentation

◆ BeginIfHookedUserApiHook()

BOOL FASTCALL BeginIfHookedUserApiHook ( VOID  )

Definition at line 106 of file usrapihk.c.

107{
109 if (IsInsideUserApiHook()) return TRUE;
110
112 return FALSE;
113}
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
BOOL FASTCALL IsInsideUserApiHook(VOID)
Definition: usrapihk.c:98
LONG gcCallUserApiHook
Definition: usrapihk.c:35

Referenced by AdjustWindowRectEx(), DefWindowProcA(), DefWindowProcW(), DrawCaption(), DrawFrameControl(), EnableScrollBar(), GetScrollInfo(), GetSystemMetrics(), IntCallWindowProcA(), IntCallWindowProcW(), MDIRedrawFrame(), SetScrollInfo(), SetWindowRgn(), SystemParametersInfoA(), and SystemParametersInfoW().

◆ ClearUserApiHook()

BOOL WINAPI ClearUserApiHook ( HINSTANCE  hInstance)

Definition at line 193 of file usrapihk.c.

194{
196 USERAPIHOOKPROC pfn = NULL, pfn1 = NULL;
197
201 {
202 pfn1 = gpfnInitUserApi;
203 if ( --gcLoadUserApiHook == 0 )
204 {
205 gfUserApiHook = 0;
207 if ( gcCallUserApiHook )
208 {
209 hInstance = NULL;
210 pfn1 = NULL;
211 pfn = gpfnInitUserApi;
213 }
214 else
215 {
219 }
220 }
221 }
223
224 if ( pfn )
225 {
226 pfn(uahShutdown, 0); // Shutdown.
227
229 pfn1 = gpfnInitUserApi;
230
231 if ( --gcLoadUserApiHook == 0 )
232 {
233 if ( gcCallUserApiHook )
234 {
235 hInstance = NULL;
236 pfn1 = NULL;
237 }
238 else
239 {
243 }
244 }
246 }
247
248 if ( pfn1 ) pfn1(uahStop, 0);
249
250 return hInstance != 0;
251}
HINSTANCE hInstance
Definition: charmap.c:19
#define NULL
Definition: types.h:112
HMODULE hModule
Definition: animate.c:44
NTSYSAPI NTSTATUS NTAPI RtlEnterCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
NTSYSAPI NTSTATUS NTAPI RtlLeaveCriticalSection(_In_ PRTL_CRITICAL_SECTION CriticalSection)
BOOL(CALLBACK * USERAPIHOOKPROC)(UAPIHK State, PUSERAPIHOOK puah)
Definition: undocuser.h:381
@ uahStop
Definition: undocuser.h:377
@ uahShutdown
Definition: undocuser.h:378
RTL_CRITICAL_SECTION gcsUserApiHook
Definition: usrapihk.c:39
HINSTANCE ghmodUserApiHook
Definition: usrapihk.c:37
VOID FASTCALL ResetUserApiHook(PUSERAPIHOOK puah)
Definition: usrapihk.c:131
USERAPIHOOK guah
Definition: usrapihk.c:344
DWORD gfUserApiHook
Definition: usrapihk.c:36
DWORD gcLoadUserApiHook
Definition: usrapihk.c:34
USERAPIHOOKPROC gpfnInitUserApi
Definition: usrapihk.c:38

Referenced by ClientLoadLibrary().

◆ CopyMsgMask()

VOID FASTCALL CopyMsgMask ( PUAHOWP  Dest,
PUAHOWP  Src,
PVOID  hkmsg,
DWORD  Size 
)

Definition at line 76 of file usrapihk.c.

77{
79
80 if ( Src && Src->Size > 0 )
81 {
82 Dest->MsgBitArray = hkmsg;
83 nSize = Src->Size;
84 if ( Size < nSize) nSize = Size;
85 Dest->Size = nSize;
87 return;
88 }
89
90 Dest->MsgBitArray = NULL;
91 Dest->Size = 0;
92 return;
93}
unsigned long DWORD
Definition: ntddk_ex.h:95
BYTE * MsgBitArray
Definition: undocuser.h:339
DWORD Size
Definition: undocuser.h:340
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
*nSize LPSTR _Inout_ LPDWORD nSize
Definition: winbase.h:2125

Referenced by InitUserApiHook().

◆ DefaultOWP()

LRESULT WINAPI DefaultOWP ( HWND  hWnd,
UINT  Msg,
WPARAM  wParam,
LPARAM  lParam,
ULONG_PTR  lResult,
PDWORD  pData 
)

Definition at line 52 of file usrapihk.c.

53{
54 return 0;
55}

Referenced by ResetUserApiHook().

◆ EndUserApiHook()

BOOL FASTCALL EndUserApiHook ( VOID  )

◆ ForceResetUserApiHook()

BOOL WINAPI ForceResetUserApiHook ( HINSTANCE  hInstance)

Definition at line 117 of file usrapihk.c.

118{
119 if ( ghmodUserApiHook == hInstance &&
121 {
124 return TRUE;
125 }
126 return FALSE;
127}
BOOLEAN NTAPI RtlIsThreadWithinLoaderCallout(VOID)
Definition: libsupp.c:347

Referenced by InitUserApiHook(), and ResetUserApiHook().

◆ GetRealWindowOwner()

DWORD WINAPI GetRealWindowOwner ( HWND  hwnd)

Definition at line 1869 of file window.c.

1870{
1872}
#define QUERY_WINDOW_REAL_ID
Definition: ntuser.h:2848
DWORD_PTR NTAPI NtUserQueryWindow(HWND hWnd, DWORD Index)
Definition: window.c:4207
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023

Referenced by ResetUserApiHook().

◆ InitUserApiHook()

BOOL WINAPI InitUserApiHook ( HINSTANCE  hInstance,
USERAPIHOOKPROC  pfn 
)

Definition at line 255 of file usrapihk.c.

256{
257 USERAPIHOOK uah;
258
259 ResetUserApiHook(&uah);
260
262
263 if (!pfn(uahLoadInit,&uah) || // Swap data, User32 to and Uxtheme from!
265 uah.size <= 0 )
266 {
268 return FALSE;
269 }
270
271 if ( ghmodUserApiHook )
272 {
274 {
276 pfn(uahStop, 0);
277 return FALSE;
278 }
280 }
281 else
282 {
284 // Do not over write GetRealWindowOwner.
285 RtlCopyMemory(&guah, &uah, sizeof(USERAPIHOOK) - sizeof(LONG));
286 gpfnInitUserApi = pfn;
288 gfUserApiHook = 1;
289 // Copy Message Masks
291 &uah.DefWndProcArray,
293 sizeof(grgbDwpLiteHookMsg));
294
296 &uah.WndProcArray,
298 sizeof(grgbWndLiteHookMsg));
299
301 &uah.DlgProcArray,
303 sizeof(grgbDlgLiteHookMsg));
304 }
306 return TRUE;
307}
long LONG
Definition: pedump.c:60
FORCERESETUSERAPIHOOK ForceResetUserApiHook
Definition: undocuser.h:367
UAHOWP WndProcArray
Definition: undocuser.h:360
UAHOWP DlgProcArray
Definition: undocuser.h:363
UAHOWP DefWndProcArray
Definition: undocuser.h:352
@ uahLoadInit
Definition: undocuser.h:376
BOOL WINAPI ForceResetUserApiHook(HINSTANCE hInstance)
Definition: usrapihk.c:117
BYTE grgbWndLiteHookMsg[128]
Definition: usrapihk.c:42
BYTE grgbDwpLiteHookMsg[128]
Definition: usrapihk.c:41
BYTE grgbDlgLiteHookMsg[128]
Definition: usrapihk.c:43
VOID FASTCALL CopyMsgMask(PUAHOWP Dest, PUAHOWP Src, PVOID hkmsg, DWORD Size)
Definition: usrapihk.c:76

Referenced by ClientLoadLibrary().

◆ IsInsideUserApiHook()

BOOL FASTCALL IsInsideUserApiHook ( VOID  )

Definition at line 98 of file usrapihk.c.

99{
100 if ( ghmodUserApiHook && gfUserApiHook ) return TRUE;
101 return FALSE;
102}

Referenced by BeginIfHookedUserApiHook(), and LoadUserApiHook().

◆ IsMsgOverride()

BOOL FASTCALL IsMsgOverride ( UINT  Msg,
PUAHOWP  puaowpOverride 
)

Definition at line 63 of file usrapihk.c.

64{
65 UINT nMsg = Msg / 8; // Group Indexed, (Msg 1024) / 8 = (0 -> 127) bytes Max
66
67 if ( puaowpOverride && nMsg < puaowpOverride->Size )
68 {
69 return (puaowpOverride->MsgBitArray[nMsg] & (1 << (Msg & WM_SETFOCUS)));
70 }
71 return FALSE;
72}
struct @1766 Msg[]
unsigned int UINT
Definition: ndis.h:50
#define WM_SETFOCUS
Definition: winuser.h:1641

Referenced by DefWindowProcA(), DefWindowProcW(), IntCallWindowProcA(), and IntCallWindowProcW().

◆ MDIRedrawFrame()

BOOL WINAPI MDIRedrawFrame ( HWND  hWnd,
DWORD  flags 
)

Definition at line 318 of file usrapihk.c.

319{
320 BOOL Hook, Ret = FALSE;
321
323
325
326 /* Bypass SEH and go direct. */
327 if (!Hook) return RealMDIRedrawFrame(hWnd, flags);
328
330 {
332 }
334 {
335 ERR("Got exception in hooked MDIRedrawFrame!\n");
336 }
337 _SEH2_END;
338
340
341 return Ret;
342}
HWND hWnd
Definition: settings.c:17
#define ERR(fmt,...)
Definition: precomp.h:57
GLbitfield flags
Definition: glext.h:7161
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:90
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:82
#define _SEH2_END
Definition: pseh2_64.h:171
#define _SEH2_TRY
Definition: pseh2_64.h:71
MDIREDRAWFRAME MDIRedrawFrame
Definition: undocuser.h:370
static __inline void LoadUserApiHook()
Definition: user_x.h:85
BOOL FASTCALL EndUserApiHook(VOID)
Definition: usrapihk.c:164
BOOL FASTCALL BeginIfHookedUserApiHook(VOID)
Definition: usrapihk.c:106
BOOL WINAPI RealMDIRedrawFrame(HWND, DWORD)
Definition: usrapihk.c:311

◆ RealAdjustWindowRectEx()

BOOL WINAPI RealAdjustWindowRectEx ( LPRECT  lpRect,
DWORD  dwStyle,
BOOL  bMenu,
DWORD  dwExStyle 
)

Definition at line 90 of file nonclient.c.

94{
95 SIZE BorderSize;
96
97 if (bMenu)
98 {
99 lpRect->top -= GetSystemMetrics(SM_CYMENU);
100 }
101 if ((dwStyle & WS_CAPTION) == WS_CAPTION)
102 {
103 if (dwExStyle & WS_EX_TOOLWINDOW)
105 else
107 }
108 UserGetWindowBorders(dwStyle, dwExStyle, &BorderSize, TRUE);
110 lpRect,
111 BorderSize.cx,
112 BorderSize.cy);
113
114 return TRUE;
115}
VOID UserGetWindowBorders(DWORD Style, DWORD ExStyle, SIZE *Size, BOOL WithClient)
Definition: winpos.c:894
#define WS_CAPTION
Definition: pedump.c:624
LONG cx
Definition: kdterminal.h:27
LONG cy
Definition: kdterminal.h:28
LONG top
Definition: windef.h:307
#define SM_CYMENU
Definition: winuser.h:987
#define WS_EX_TOOLWINDOW
Definition: winuser.h:404
#define SM_CYSMCAPTION
Definition: winuser.h:1025
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
#define SM_CYCAPTION
Definition: winuser.h:974
int WINAPI GetSystemMetrics(_In_ int)

Referenced by AdjustWindowRectEx(), and ResetUserApiHook().

◆ RealDefWindowProcA()

LRESULT WINAPI RealDefWindowProcA ( HWND  hWnd,
UINT  Msg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 799 of file defwnd.c.

803{
804 LRESULT Result = 0;
805 PWND Wnd;
806
807 Wnd = ValidateHwnd(hWnd);
808
809 if ( !Wnd &&
811 Msg != WM_CTLCOLORBTN &&
812 Msg != WM_CTLCOLORDLG &&
814 return 0;
815
817 switch (Msg)
818 {
819 case WM_NCCREATE:
820 {
821 if ( Wnd &&
822 Wnd->style & (WS_HSCROLL | WS_VSCROLL) )
823 {
824 if (!Wnd->pSBInfo)
825 {
826 SCROLLINFO si = {sizeof si, SIF_ALL, 0, 100, 0, 0, 0};
829 }
830 }
831
832 if (lParam)
833 {
835 /* check for string, as static icons, bitmaps (SS_ICON, SS_BITMAP)
836 * may have child window IDs instead of window name */
837 if (HIWORD(cs->lpszName))
838 {
839 DefSetText(hWnd, (PCWSTR)cs->lpszName, TRUE);
840 }
841 Result = 1;
842 }
843 break;
844 }
845
846 case WM_GETTEXTLENGTH:
847 {
848 PWSTR buf;
849 ULONG len;
850
851 if (Wnd != NULL && Wnd->strName.Length != 0)
852 {
854 if (buf != NULL &&
856 buf,
857 Wnd->strName.Length)))
858 {
859 Result = (LRESULT) len;
860 }
861 }
862 else Result = 0L;
863
864 break;
865 }
866
867 case WM_GETTEXT:
868 {
869 PWSTR buf = NULL;
870 PSTR outbuf = (PSTR)lParam;
871 SIZE_T copy;
872
873 if (Wnd != NULL && wParam != 0)
874 {
875 if (Wnd->strName.Buffer != NULL)
877 else
878 outbuf[0] = L'\0';
879
880 if (buf != NULL)
881 {
882 if (Wnd->strName.Length != 0)
883 {
884 copy = min(Wnd->strName.Length / sizeof(WCHAR), wParam - 1);
886 0,
887 buf,
888 copy,
889 outbuf,
890 wParam,
891 NULL,
892 NULL);
893 outbuf[Result] = '\0';
894 }
895 else
896 outbuf[0] = '\0';
897 }
898 }
899 break;
900 }
901
902 case WM_SETTEXT:
903 {
905
907 {
909 IntNotifyWinEvent(EVENT_OBJECT_NAMECHANGE, hWnd, OBJID_WINDOW, CHILDID_SELF, 0);
910 }
911 Result = 1;
912 break;
913 }
914
915 case WM_IME_KEYDOWN:
916 {
918 break;
919 }
920
921 case WM_IME_KEYUP:
922 {
924 break;
925 }
926
927 case WM_IME_CHAR:
928 {
929 if (HIBYTE(wParam))
932 break;
933 }
934
935 case WM_IME_COMPOSITION:
936 if (lParam & GCS_RESULTSTR)
937 {
938 LONG size, i;
939 unsigned char lead = 0;
940 char *buf = NULL;
941 HIMC himc = IMM_FN(ImmGetContext)( hWnd );
942
943 if (himc)
944 {
946 {
947 if (!(buf = HeapAlloc( GetProcessHeap(), 0, size ))) size = 0;
949 }
950 IMM_FN(ImmReleaseContext)( hWnd, himc );
951
952 for (i = 0; i < size; i++)
953 {
954 unsigned char c = buf[i];
955 if (!lead)
956 {
957 if (IsDBCSLeadByte( c ))
958 lead = c;
959 else
961 }
962 else
963 {
964 SendMessageA( hWnd, WM_IME_CHAR, MAKEWORD(c, lead), 1 );
965 lead = 0;
966 }
967 }
968 HeapFree( GetProcessHeap(), 0, buf );
969 }
970 }
971 /* fall through */
972 case WM_IME_STARTCOMPOSITION:
973 case WM_IME_ENDCOMPOSITION:
974 case WM_IME_SELECT:
975 case WM_IME_NOTIFY:
976 case WM_IME_CONTROL:
978NormalImeMsgHandling:
979 {
980 HWND hwndIME;
981
982 if (GetWin32ClientInfo()->dwTIFlags & TIF_DISABLEIME)
983 {
984 TRACE("This thread's IME is disabled\n");
985 break;
986 }
987
988 hwndIME = IMM_FN(ImmGetDefaultIMEWnd)(hWnd);
989 if (!hwndIME)
990 {
991 ERR("hwndIME was NULL\n");
992 break;
993 }
994
995 if (hwndIME == hWnd)
996 {
998 break;
999 }
1000
1001 Result = SendMessageA(hwndIME, Msg, wParam, lParam);
1002 break;
1003 }
1004
1005 case WM_IME_SYSTEM:
1006 {
1007 if (wParam == 4)
1008 break;
1009
1010 goto NormalImeMsgHandling;
1011 }
1012
1013 default:
1015 }
1016
1018 return Result;
1019}
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
Definition: copy.c:51
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
DWORD HIMC
Definition: dimm.idl:75
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
#define GetProcessHeap()
Definition: compat.h:736
#define CP_ACP
Definition: compat.h:109
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define WideCharToMultiByte
Definition: compat.h:111
BOOL WINAPI IsDBCSLeadByte(BYTE testchar)
Definition: locale.c:2126
#define L(x)
Definition: resources.c:13
GLsizeiptr size
Definition: glext.h:5919
const GLubyte * c
Definition: glext.h:8905
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLenum GLsizei len
Definition: glext.h:6722
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define cs
Definition: i386-dis.c:442
#define WM_IME_SYSTEM
Definition: imm32_undoc.h:32
LONG WINAPI ImmGetCompositionStringA(_In_ HIMC hIMC, _In_ DWORD dwIndex, _Out_writes_bytes_opt_(dwBufLen) LPVOID lpBuf, _In_ DWORD dwBufLen)
Definition: compstr.c:860
#define GCS_RESULTSTR
Definition: imm.h:234
HIMC WINAPI ImmGetContext(_In_ HWND hWnd)
Definition: imm.c:1065
BOOL WINAPI ImmReleaseContext(_In_ HWND hWnd, _In_ HIMC hIMC)
Definition: imm.c:1109
HWND WINAPI ImmGetDefaultIMEWnd(_In_opt_ HWND hWnd)
Definition: ime.c:440
#define TIF_DISABLEIME
Definition: ntuser.h:288
#define GetWin32ClientInfo()
Definition: ntuser.h:352
#define LOBYTE(W)
Definition: jmemdos.c:487
#define HIBYTE(W)
Definition: jmemdos.c:486
#define min(a, b)
Definition: monoChain.cc:55
_Use_decl_annotations_ NTSTATUS NTAPI RtlUnicodeToMultiByteSize(_Out_ PULONG MbSize, _In_ PCWCH UnicodeString, _In_ ULONG UnicodeSize)
Definition: nlsboot.c:145
BOOL UserPaintCaption(PWND pWnd, INT Flags)
Definition: defwnd.c:398
#define LRESULT
Definition: ole.h:14
#define WS_VSCROLL
Definition: pedump.c:627
#define WS_HSCROLL
Definition: pedump.c:628
LRESULT WINAPI ImeWndProc_common(HWND, UINT, WPARAM, LPARAM, BOOL)
Definition: imm.c:989
#define TRACE(s)
Definition: solgame.cpp:4
Definition: ntuser.h:694
DWORD style
Definition: ntuser.h:706
PSBINFO pSBInfo
Definition: ntuser.h:726
LARGE_UNICODE_STRING strName
Definition: ntuser.h:736
uint16_t * PWSTR
Definition: typedefs.h:56
char * PSTR
Definition: typedefs.h:51
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define MAKEWORD(a, b)
Definition: typedefs.h:248
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t ULONG
Definition: typedefs.h:59
#define HIWORD(l)
Definition: typedefs.h:247
LRESULT WINAPI User32DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL bUnicode)
Definition: defwnd.c:312
void SPY_EnterMessage(INT iFlag, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: spy.c:2593
#define IMM_FN(name)
Definition: user32p.h:56
#define SPY_RESULT_DEFWND
Definition: user32p.h:72
void SPY_ExitMessage(INT iFlag, HWND hwnd, UINT msg, LRESULT lReturn, WPARAM wParam, LPARAM lParam)
Definition: spy.c:2648
#define SPY_DEFWNDPROC
Definition: user32p.h:69
BOOL APIENTRY DefSetText(PWND Wnd, PCWSTR WindowText)
Definition: window.c:4390
#define ValidateHwnd(hwnd)
Definition: precomp.h:101
static PVOID FASTCALL DesktopPtrToUser(PVOID ptr)
Definition: utils.c:188
VOID FASTCALL IntNotifyWinEvent(DWORD Event, PWND pWnd, LONG idObject, LONG idChild, DWORD flags)
Definition: event.c:178
#define OBJID_WINDOW
Definition: winable.h:15
#define CHILDID_SELF
Definition: winable.h:14
LONG_PTR LRESULT
Definition: windef.h:209
#define WM_IME_KEYUP
Definition: winuser.h:1867
#define WM_CTLCOLORSTATIC
Definition: winuser.h:1800
#define WM_GETTEXTLENGTH
Definition: winuser.h:1647
#define GetWindowLongPtrW
Definition: winuser.h:4931
#define WM_KEYUP
Definition: winuser.h:1744
#define WM_IME_NOTIFY
Definition: winuser.h:1858
#define WM_IME_KEYDOWN
Definition: winuser.h:1866
#define SB_VERT
Definition: winuser.h:553
struct tagCREATESTRUCTA * LPCREATESTRUCTA
LRESULT WINAPI SendMessageA(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_GETTEXT
Definition: winuser.h:1646
#define WM_CTLCOLORMSGBOX
Definition: winuser.h:1794
#define WM_NCCREATE
Definition: winuser.h:1711
#define WM_IME_SETCONTEXT
Definition: winuser.h:1857
#define WM_CTLCOLORBTN
Definition: winuser.h:1797
#define WM_SETTEXT
Definition: winuser.h:1645
#define WM_IME_CHAR
Definition: winuser.h:1862
#define SIF_ALL
Definition: winuser.h:1243
#define DC_TEXT
Definition: winuser.h:430
#define WM_CHAR
Definition: winuser.h:1745
#define WM_IME_CONTROL
Definition: winuser.h:1859
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
#define WM_IME_SELECT
Definition: winuser.h:1861
#define WM_KEYDOWN
Definition: winuser.h:1743
#define GWL_STYLE
Definition: winuser.h:863
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_CTLCOLORDLG
Definition: winuser.h:1798
#define SB_HORZ
Definition: winuser.h:552
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by DefWindowProcA(), and ResetUserApiHook().

◆ RealDefWindowProcW()

LRESULT WINAPI RealDefWindowProcW ( HWND  hWnd,
UINT  Msg,
WPARAM  wParam,
LPARAM  lParam 
)

Definition at line 1023 of file defwnd.c.

1027{
1028 LRESULT Result = 0;
1029 PWND Wnd;
1030
1031 Wnd = ValidateHwnd(hWnd);
1032
1033 if ( !Wnd &&
1035 Msg != WM_CTLCOLORBTN &&
1036 Msg != WM_CTLCOLORDLG &&
1038 return 0;
1039
1041 switch (Msg)
1042 {
1043 case WM_NCCREATE:
1044 {
1045 if ( Wnd &&
1046 Wnd->style & (WS_HSCROLL | WS_VSCROLL) )
1047 {
1048 if (!Wnd->pSBInfo)
1049 {
1050 SCROLLINFO si = {sizeof si, SIF_ALL, 0, 100, 0, 0, 0};
1051 if (Wnd->style & WS_HSCROLL)
1053 if (Wnd->style & WS_VSCROLL)
1055 }
1056 }
1057
1058 if (lParam)
1059 {
1061 /* check for string, as static icons, bitmaps (SS_ICON, SS_BITMAP)
1062 * may have child window IDs instead of window name */
1063 if (HIWORD(cs->lpszName))
1064 {
1065 DefSetText(hWnd, cs->lpszName, FALSE);
1066 }
1067 Result = 1;
1068 }
1069 break;
1070 }
1071
1072 case WM_GETTEXTLENGTH:
1073 {
1074 PWSTR buf;
1075 ULONG len;
1076
1077 if (Wnd != NULL && Wnd->strName.Length != 0)
1078 {
1080 if (buf != NULL &&
1082 buf,
1083 Wnd->strName.Length)))
1084 {
1085 Result = (LRESULT) (Wnd->strName.Length / sizeof(WCHAR));
1086 }
1087 }
1088 else Result = 0L;
1089
1090 break;
1091 }
1092
1093 case WM_GETTEXT:
1094 {
1095 PWSTR buf = NULL;
1096 PWSTR outbuf = (PWSTR)lParam;
1097
1098 if (Wnd != NULL && wParam != 0)
1099 {
1100 if (Wnd->strName.Buffer != NULL)
1102 else
1103 outbuf[0] = L'\0';
1104
1105 if (buf != NULL)
1106 {
1107 if (Wnd->strName.Length != 0)
1108 {
1109 Result = min(Wnd->strName.Length / sizeof(WCHAR), wParam - 1);
1110 RtlCopyMemory(outbuf,
1111 buf,
1112 Result * sizeof(WCHAR));
1113 outbuf[Result] = L'\0';
1114 }
1115 else
1116 outbuf[0] = L'\0';
1117 }
1118 }
1119 break;
1120 }
1121
1122 case WM_SETTEXT:
1123 {
1125
1128 Result = 1;
1129 break;
1130 }
1131
1132 case WM_IME_CHAR:
1133 {
1135 Result = 0;
1136 break;
1137 }
1138
1139 case WM_IME_KEYDOWN:
1140 {
1142 break;
1143 }
1144
1145 case WM_IME_KEYUP:
1146 {
1148 break;
1149 }
1150
1151 case WM_IME_COMPOSITION:
1152 if (lParam & GCS_RESULTSTR)
1153 {
1154 LONG size, i;
1155 WCHAR *buf = NULL;
1156 HIMC himc = IMM_FN(ImmGetContext)( hWnd );
1157
1158 if (himc)
1159 {
1161 {
1162 if (!(buf = HeapAlloc( GetProcessHeap(), 0, size * sizeof(WCHAR) ))) size = 0;
1163 else size = IMM_FN(ImmGetCompositionStringW)( himc, GCS_RESULTSTR, buf, size * sizeof(WCHAR) );
1164 }
1165 IMM_FN(ImmReleaseContext)( hWnd, himc );
1166
1167 for (i = 0; i < size / sizeof(WCHAR); i++)
1169 HeapFree( GetProcessHeap(), 0, buf );
1170 }
1171 }
1172 /* fall through */
1173 case WM_IME_STARTCOMPOSITION:
1174 case WM_IME_ENDCOMPOSITION:
1175 case WM_IME_SELECT:
1176 case WM_IME_NOTIFY:
1177 case WM_IME_CONTROL:
1178 case WM_IME_SETCONTEXT:
1179NormalImeMsgHandling:
1180 {
1181 HWND hwndIME;
1182
1183 if (GetWin32ClientInfo()->dwTIFlags & TIF_DISABLEIME)
1184 {
1185 TRACE("This thread's IME is disabled\n");
1186 break;
1187 }
1188
1189 hwndIME = IMM_FN(ImmGetDefaultIMEWnd)(hWnd);
1190 if (!hwndIME)
1191 {
1192 ERR("hwndIME was NULL\n");
1193 break;
1194 }
1195
1196 if (hwndIME == hWnd)
1197 {
1198 ImeWndProc_common(hwndIME, Msg, wParam, lParam, TRUE);
1199 break;
1200 }
1201
1202 Result = SendMessageW(hwndIME, Msg, wParam, lParam);
1203 break;
1204 }
1205
1206 case WM_IME_SYSTEM:
1207 {
1208 if (wParam == 4)
1209 break;
1210
1211 goto NormalImeMsgHandling;
1212 }
1213
1214 default:
1216 }
1218
1219 return Result;
1220}
LONG WINAPI ImmGetCompositionStringW(_In_ HIMC hIMC, _In_ DWORD dwIndex, _Out_writes_bytes_opt_(dwBufLen) LPVOID lpBuf, _In_ DWORD dwBufLen)
Definition: compstr.c:908
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
struct tagCREATESTRUCTW * LPCREATESTRUCTW
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by DefWindowProcW(), and ResetUserApiHook().

◆ RealDrawFrameControl()

BOOL WINAPI RealDrawFrameControl ( HDC  hDC,
LPRECT  rc,
UINT  uType,
UINT  uState 
)

Definition at line 1423 of file draw.c.

1424{
1425 if (GetMapMode(hDC) != MM_TEXT)
1426 return FALSE;
1427
1428 switch(uType)
1429 {
1430 case DFC_BUTTON:
1431 return UITOOLS95_DrawFrameButton(hDC, rc, uState);
1432 case DFC_CAPTION:
1433 return UITOOLS95_DrawFrameCaption(hDC, rc, uState);
1434 case DFC_MENU:
1435 {
1436 BOOL ret;
1437 COLORREF rgbOldText;
1438 INT iOldBackMode;
1439
1440 if (uState & (DFCS_MENUARROWUP | DFCS_MENUARROWDOWN))
1441 {
1442 if (!(uState & DFCS_TRANSPARENT))
1443 FillRect(hDC, rc, (HBRUSH)(COLOR_MENU + 1)); /* Fill by menu color */
1444 }
1445 else
1446 {
1447 FillRect(hDC, rc, (HBRUSH)GetStockObject(WHITE_BRUSH)); /* Fill by white */
1448 }
1449
1450 rgbOldText = SetTextColor(hDC, RGB(0, 0, 0)); /* Draw by black */
1451 iOldBackMode = SetBkMode(hDC, TRANSPARENT);
1452 ret = UITOOLS95_DrawFrameMenu(hDC, rc, uState);
1453 SetBkMode(hDC, iOldBackMode);
1454 SetTextColor(hDC, rgbOldText);
1455 return ret;
1456 }
1457#if 0
1458 case DFC_POPUPMENU:
1460 break;
1461#endif
1462 case DFC_SCROLL:
1463 return UITOOLS95_DrawFrameScroll(hDC, rc, uState);
1464 }
1465 return FALSE;
1466}
static HDC hDC
Definition: 3dtext.c:33
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
#define RGB(r, g, b)
Definition: precomp.h:71
return ret
Definition: mutex.c:146
int32_t INT
Definition: typedefs.h:58
#define DFCS_MENUARROWUP
Definition: undocuser.h:159
#define DFCS_MENUARROWDOWN
Definition: undocuser.h:160
BOOL FASTCALL UITOOLS95_DrawFrameMenu(HDC dc, LPRECT r, UINT uFlags)
Definition: draw.c:959
BOOL FASTCALL UITOOLS95_DrawFrameButton(HDC hdc, LPRECT rc, UINT uState)
Definition: draw.c:759
BOOL FASTCALL UITOOLS95_DrawFrameScroll(HDC dc, LPRECT r, UINT uFlags)
Definition: draw.c:856
BOOL FASTCALL UITOOLS95_DrawFrameCaption(HDC dc, LPRECT r, UINT uFlags)
Definition: draw.c:788
DWORD COLORREF
Definition: windef.h:300
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define TRANSPARENT
Definition: wingdi.h:950
#define WHITE_BRUSH
Definition: wingdi.h:902
int WINAPI GetMapMode(_In_ HDC)
Definition: coord.c:114
#define MM_TEXT
Definition: wingdi.h:873
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
Definition: dc.c:1056
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:917
#define DFC_SCROLL
Definition: winuser.h:475
#define COLOR_MENU
Definition: winuser.h:928
#define DFC_MENU
Definition: winuser.h:474
#define DFC_BUTTON
Definition: winuser.h:476
#define DFC_CAPTION
Definition: winuser.h:473

Referenced by DrawFrameControl(), and ResetUserApiHook().

◆ RealGetScrollInfo()

BOOL WINAPI RealGetScrollInfo ( HWND  Wnd,
INT  SBType,
LPSCROLLINFO  Info 
)

Definition at line 1512 of file scrollbar.c.

1514{
1515 PWND pWnd;
1516 PSBDATA pSBData;
1517
1518 if (SB_CTL == SBType)
1519 {
1520 return SendMessageW(Wnd, SBM_GETSCROLLINFO, 0, (LPARAM) Info);
1521 }
1522
1523 pWnd = ValidateHwnd(Wnd);
1524 if (!pWnd) return FALSE;
1525
1526 if (SBType < SB_HORZ || SBType > SB_VERT)
1527 {
1529 return FALSE;
1530 }
1531 if (!pWnd->pSBInfo)
1532 {
1534 return FALSE;
1535 }
1536 pSBData = IntGetSBData(pWnd, SBType);
1537 return NtUserSBGetParms(Wnd, SBType, pSBData, Info);
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define SetLastError(x)
Definition: compat.h:752
BOOL NTAPI NtUserSBGetParms(HWND hwnd, int fnBar, PSBDATA pSBData, LPSCROLLINFO lpsi)
Definition: scrollbar.c:1193
PSBDATA FASTCALL IntGetSBData(PWND pwnd, INT Bar)
Definition: scrollbar.c:77
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690
LONG_PTR LPARAM
Definition: windef.h:208
#define ERROR_NO_SCROLLBARS
Definition: winerror.h:928
#define SB_CTL
Definition: winuser.h:554

Referenced by GetScrollInfo(), and ResetUserApiHook().

◆ RealGetSystemMetrics()

int WINAPI RealGetSystemMetrics ( int  nIndex)

Definition at line 128 of file desktop.c.

129{
130 //FIXME("Global Server Data -> %x\n",gpsi);
131 if (nIndex < 0 || nIndex >= SM_CMETRICS) return 0;
132 return gpsi->aiSysMet[nIndex];
133}
PSERVERINFO gpsi
Definition: imm.c:18
#define SM_CMETRICS
Definition: winuser.h:1076

Referenced by GetSystemMetrics(), and ResetUserApiHook().

◆ RealMDIRedrawFrame()

BOOL WINAPI RealMDIRedrawFrame ( HWND  hWnd,
DWORD  flags 
)

Definition at line 311 of file usrapihk.c.

312{
314}
EXTINLINE BOOL NtUserxMDIRedrawFrame(HWND hWnd)
Definition: ntwrapper.h:783

Referenced by MDIRedrawFrame(), and ResetUserApiHook().

◆ RealSetScrollInfo()

INT WINAPI RealSetScrollInfo ( HWND  Wnd,
int  SBType,
LPCSCROLLINFO  Info,
BOOL  bRedraw 
)

Definition at line 1665 of file scrollbar.c.

1667{
1668 if (SB_CTL == SBType)
1669 {
1670 return SendMessageW(Wnd, SBM_SETSCROLLINFO, (WPARAM) bRedraw, (LPARAM) Info);
1671 }
1672 else
1673 {
1674 return NtUserSetScrollInfo(Wnd, SBType, Info, bRedraw);
1675 }
DWORD NTAPI NtUserSetScrollInfo(HWND hwnd, int fnBar, LPCSCROLLINFO lpsi, BOOL bRedraw)
Definition: scrollbar.c:1342
UINT_PTR WPARAM
Definition: windef.h:207

Referenced by ResetUserApiHook(), and SetScrollInfo().

◆ RealSystemParametersInfoA()

BOOL WINAPI RealSystemParametersInfoA ( UINT  uiAction,
UINT  uiParam,
PVOID  pvParam,
UINT  fWinIni 
)

Definition at line 180 of file desktop.c.

184{
185 switch (uiAction)
186 {
187
188 case SPI_GETNONCLIENTMETRICS:
189 {
190 LPNONCLIENTMETRICSA pnclma = (LPNONCLIENTMETRICSA)pvParam;
191 NONCLIENTMETRICSW nclmw;
192 if(pnclma->cbSize != sizeof(NONCLIENTMETRICSA))
193 {
195 return FALSE;
196 }
197 nclmw.cbSize = sizeof(NONCLIENTMETRICSW);
198
199 if (!SystemParametersInfoW(uiAction, sizeof(NONCLIENTMETRICSW),
200 &nclmw, fWinIni))
201 return FALSE;
202
203 pnclma->iBorderWidth = nclmw.iBorderWidth;
204 pnclma->iScrollWidth = nclmw.iScrollWidth;
205 pnclma->iScrollHeight = nclmw.iScrollHeight;
206 pnclma->iCaptionWidth = nclmw.iCaptionWidth;
207 pnclma->iCaptionHeight = nclmw.iCaptionHeight;
208 pnclma->iSmCaptionWidth = nclmw.iSmCaptionWidth;
209 pnclma->iSmCaptionHeight = nclmw.iSmCaptionHeight;
210 pnclma->iMenuWidth = nclmw.iMenuWidth;
211 pnclma->iMenuHeight = nclmw.iMenuHeight;
212 LogFontW2A(&(pnclma->lfCaptionFont), &(nclmw.lfCaptionFont));
213 LogFontW2A(&(pnclma->lfSmCaptionFont), &(nclmw.lfSmCaptionFont));
214 LogFontW2A(&(pnclma->lfMenuFont), &(nclmw.lfMenuFont));
215 LogFontW2A(&(pnclma->lfStatusFont), &(nclmw.lfStatusFont));
216 LogFontW2A(&(pnclma->lfMessageFont), &(nclmw.lfMessageFont));
217 return TRUE;
218 }
219 case SPI_SETNONCLIENTMETRICS:
220 {
221 LPNONCLIENTMETRICSA pnclma = (LPNONCLIENTMETRICSA)pvParam;
222 NONCLIENTMETRICSW nclmw;
223 if(pnclma->cbSize != sizeof(NONCLIENTMETRICSA))
224 {
226 return FALSE;
227 }
228 nclmw.cbSize = sizeof(NONCLIENTMETRICSW);
229 nclmw.iBorderWidth = pnclma->iBorderWidth;
230 nclmw.iScrollWidth = pnclma->iScrollWidth;
231 nclmw.iScrollHeight = pnclma->iScrollHeight;
232 nclmw.iCaptionWidth = pnclma->iCaptionWidth;
233 nclmw.iCaptionHeight = pnclma->iCaptionHeight;
234 nclmw.iSmCaptionWidth = pnclma->iSmCaptionWidth;
235 nclmw.iSmCaptionHeight = pnclma->iSmCaptionHeight;
236 nclmw.iMenuWidth = pnclma->iMenuWidth;
237 nclmw.iMenuHeight = pnclma->iMenuHeight;
238 LogFontA2W(&(nclmw.lfCaptionFont), &(pnclma->lfCaptionFont));
239 LogFontA2W(&(nclmw.lfSmCaptionFont), &(pnclma->lfSmCaptionFont));
240 LogFontA2W(&(nclmw.lfMenuFont), &(pnclma->lfMenuFont));
241 LogFontA2W(&(nclmw.lfStatusFont), &(pnclma->lfStatusFont));
242 LogFontA2W(&(nclmw.lfMessageFont), &(pnclma->lfMessageFont));
243
244 return SystemParametersInfoW(uiAction, sizeof(NONCLIENTMETRICSW),
245 &nclmw, fWinIni);
246 }
247 case SPI_GETICONMETRICS:
248 {
249 LPICONMETRICSA picma = (LPICONMETRICSA)pvParam;
250 ICONMETRICSW icmw;
251 if(picma->cbSize != sizeof(ICONMETRICSA))
252 {
254 return FALSE;
255 }
256 icmw.cbSize = sizeof(ICONMETRICSW);
257 if (!SystemParametersInfoW(uiAction, sizeof(ICONMETRICSW),
258 &icmw, fWinIni))
259 return FALSE;
260
261 picma->iHorzSpacing = icmw.iHorzSpacing;
262 picma->iVertSpacing = icmw.iVertSpacing;
263 picma->iTitleWrap = icmw.iTitleWrap;
264 LogFontW2A(&(picma->lfFont), &(icmw.lfFont));
265 return TRUE;
266 }
267 case SPI_SETICONMETRICS:
268 {
269 LPICONMETRICSA picma = (LPICONMETRICSA)pvParam;
270 ICONMETRICSW icmw;
271 if(picma->cbSize != sizeof(ICONMETRICSA))
272 {
274 return FALSE;
275 }
276 icmw.cbSize = sizeof(ICONMETRICSW);
277 icmw.iHorzSpacing = picma->iHorzSpacing;
278 icmw.iVertSpacing = picma->iVertSpacing;
279 icmw.iTitleWrap = picma->iTitleWrap;
280 LogFontA2W(&(icmw.lfFont), &(picma->lfFont));
281
282 return SystemParametersInfoW(uiAction, sizeof(ICONMETRICSW),
283 &icmw, fWinIni);
284 }
286 {
287 LOGFONTW lfw;
288 if (!SystemParametersInfoW(uiAction, 0, &lfw, fWinIni))
289 return FALSE;
290 LogFontW2A(pvParam, &lfw);
291 return TRUE;
292 }
294 {
295 LPLOGFONTA plfa = (LPLOGFONTA)pvParam;
296 LOGFONTW lfw;
297 LogFontA2W(&lfw,plfa);
298 return SystemParametersInfoW(uiAction, 0, &lfw, fWinIni);
299 }
301 {
302 BOOL Ret;
303 WCHAR awc[MAX_PATH];
304 UNICODE_STRING ustrWallpaper;
305 ANSI_STRING astrWallpaper;
306
308 RtlInitUnicodeString(&ustrWallpaper, awc);
309 RtlInitEmptyAnsiString(&astrWallpaper, pvParam, uiParam);
310 RtlUnicodeStringToAnsiString(&astrWallpaper, &ustrWallpaper, FALSE);
311 return Ret;
312 }
313
315 {
316 UNICODE_STRING ustrWallpaper;
317 BOOL Ret;
318
319 if (pvParam)
320 {
321 if (!RtlCreateUnicodeStringFromAsciiz(&ustrWallpaper, pvParam))
322 {
323 ERR("RtlCreateUnicodeStringFromAsciiz failed\n");
324 return FALSE;
325 }
326 pvParam = &ustrWallpaper;
327 }
328
329 Ret = NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, uiParam, pvParam, fWinIni);
330
331 if (pvParam)
332 RtlFreeUnicodeString(&ustrWallpaper);
333
334 return Ret;
335 }
336 }
337 return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
338}
#define MAX_PATH
Definition: compat.h:34
BOOL NTAPI NtUserSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
Definition: sysparams.c:2179
#define SPI_GETDESKWALLPAPER
Definition: sysparams.c:34
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
VOID WINAPI LogFontW2A(LPLOGFONTA pA, CONST LOGFONTW *pW)
Definition: desktop.c:103
BOOL WINAPI SystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
Definition: desktop.c:398
VOID WINAPI LogFontA2W(LPLOGFONTW pW, CONST LOGFONTA *pA)
Definition: desktop.c:77
struct tagLOGFONTA * LPLOGFONTA
#define SPI_SETDESKWALLPAPER
Definition: winuser.h:1380
#define SPI_GETICONTITLELOGFONT
Definition: winuser.h:1391
#define SPI_SETICONTITLELOGFONT
Definition: winuser.h:1394

Referenced by ResetUserApiHook(), and SystemParametersInfoA().

◆ RealSystemParametersInfoW()

BOOL WINAPI RealSystemParametersInfoW ( UINT  uiAction,
UINT  uiParam,
PVOID  pvParam,
UINT  fWinIni 
)

Definition at line 341 of file desktop.c.

345{
346 switch(uiAction)
347 {
348
350 {
351 UNICODE_STRING ustrWallpaper;
352
353 RtlInitUnicodeString(&ustrWallpaper, pvParam);
354 return NtUserSystemParametersInfo(SPI_SETDESKWALLPAPER, uiParam, &ustrWallpaper, fWinIni);
355 }
356 }
357 return NtUserSystemParametersInfo(uiAction, uiParam, pvParam, fWinIni);
358}

Referenced by ResetUserApiHook(), and SystemParametersInfoW().

◆ RealUserDrawCaption()

BOOL WINAPI RealUserDrawCaption ( HWND  hWnd,
HDC  hDC,
LPCRECT  lpRc,
UINT  uFlags 
)

Definition at line 80 of file nonclient.c.

81{
82 ERR("Real DC flags %08x\n",uFlags);
83 return NtUserDrawCaption(hWnd, hDC, lpRc, uFlags);
84}
UINT uFlags
Definition: api.c:59
BOOL NTAPI NtUserDrawCaption(HWND hWnd, HDC hDc, LPCRECT lpRc, UINT uFlags)
Definition: painting.c:2457

Referenced by ResetUserApiHook().

◆ RegisterUserApiHook()

BOOL WINAPI RegisterUserApiHook ( PUSERAPIHOOKINFO  puah)

Definition at line 376 of file usrapihk.c.

377{
378 UNICODE_STRING m_dllname1;
379 UNICODE_STRING m_funname1;
380
381 if (puah->m_size == sizeof(USERAPIHOOKINFO))
382 {
383 WARN("RegisterUserApiHook: %S and %S\n", puah->m_dllname1, puah->m_funname1);
384 RtlInitUnicodeString(&m_dllname1, puah->m_dllname1);
385 RtlInitUnicodeString(&m_funname1, puah->m_funname1);
386 return NtUserRegisterUserApiHook( &m_dllname1, &m_funname1, 0, 0);
387 }
388 return FALSE;
389}
#define WARN(fmt,...)
Definition: precomp.h:61
BOOL NTAPI NtUserRegisterUserApiHook(PUNICODE_STRING m_dllname1, PUNICODE_STRING m_funname1, DWORD dwUnknown3, DWORD dwUnknown4)
Definition: hook.c:1722
LPCWSTR m_funname1
Definition: undocuser.h:387
LPCWSTR m_dllname1
Definition: undocuser.h:386

◆ ResetUserApiHook()

VOID FASTCALL ResetUserApiHook ( PUSERAPIHOOK  puah)

Definition at line 131 of file usrapihk.c.

132{
133 // Setup Structure.....
134 puah->size = sizeof(USERAPIHOOK);
138 puah->DefWndProcArray.Size = 0;
144 puah->PreWndProc = DefaultOWP;
145 puah->PostWndProc = DefaultOWP;
147 puah->WndProcArray.Size = 0;
151 puah->DlgProcArray.Size = 0;
160}
INT NTAPI NtUserSetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw)
Definition: winpos.c:3599
BOOL NTAPI NtUserEnableScrollBar(HWND hWnd, UINT wSBflags, UINT wArrows)
Definition: scrollbar.c:1253
SYSTEMPARAMETERSINFOA SystemParametersInfoA
Definition: undocuser.h:365
WNDPROC_OWP PostWndProc
Definition: undocuser.h:359
GETREALWINDOWOWNER GetRealWindowOwner
Definition: undocuser.h:371
SETWINDOWRGN SetWindowRgn
Definition: undocuser.h:357
WNDPROC_OWP PreWndProc
Definition: undocuser.h:358
GETSCROLLINFO GetScrollInfo
Definition: undocuser.h:353
SYSTEMPARAMETERSINFOW SystemParametersInfoW
Definition: undocuser.h:366
GETSYSTEMMETRICS GetSystemMetrics
Definition: undocuser.h:364
DRAWFRAMECONTROL DrawFrameControl
Definition: undocuser.h:368
ADJUSTWINDOWRECTEX AdjustWindowRectEx
Definition: undocuser.h:356
WNDPROC DefWindowProcA
Definition: undocuser.h:350
ENABLESCROLLBAR EnableScrollBar
Definition: undocuser.h:355
WNDPROC_OWP PreDefDlgProc
Definition: undocuser.h:361
WNDPROC_OWP PostDefDlgProc
Definition: undocuser.h:362
WNDPROC DefWindowProcW
Definition: undocuser.h:351
DRAWCAPTION DrawCaption
Definition: undocuser.h:369
SETSCROLLINFO SetScrollInfo
Definition: undocuser.h:354
struct tagUSERAPIHOOK USERAPIHOOK
LRESULT WINAPI RealDefWindowProcW(HWND, UINT, WPARAM, LPARAM)
Definition: defwnd.c:1023
BOOL WINAPI RealGetScrollInfo(HWND, INT, LPSCROLLINFO)
Definition: scrollbar.c:1512
LRESULT WINAPI RealDefWindowProcA(HWND, UINT, WPARAM, LPARAM)
Definition: defwnd.c:799
INT WINAPI RealSetScrollInfo(HWND, int, LPCSCROLLINFO, BOOL)
Definition: scrollbar.c:1665
int WINAPI RealGetSystemMetrics(int)
Definition: desktop.c:128
LRESULT WINAPI DefaultOWP(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, ULONG_PTR lResult, PDWORD pData)
Definition: usrapihk.c:52
DWORD WINAPI GetRealWindowOwner(HWND)
Definition: window.c:1869
BOOL WINAPI RealDrawFrameControl(HDC, LPRECT, UINT, UINT)
Definition: draw.c:1423
BOOL WINAPI RealSystemParametersInfoW(UINT, UINT, PVOID, UINT)
Definition: desktop.c:341
BOOL WINAPI RealSystemParametersInfoA(UINT, UINT, PVOID, UINT)
Definition: desktop.c:180
BOOL WINAPI RealUserDrawCaption(HWND hWnd, HDC hDC, LPCRECT lpRc, UINT uFlags)
Definition: nonclient.c:80
BOOL WINAPI RealAdjustWindowRectEx(LPRECT, DWORD, BOOL, DWORD)
Definition: nonclient.c:90

Referenced by ClearUserApiHook(), ForceResetUserApiHook(), and InitUserApiHook().

◆ UnregisterUserApiHook()

BOOL WINAPI UnregisterUserApiHook ( VOID  )

Definition at line 394 of file usrapihk.c.

395{
397}
BOOL NTAPI NtUserUnregisterUserApiHook(VOID)
Definition: hook.c:1768

Referenced by ThemeHooksRemove().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( user32  )

Variable Documentation

◆ gcCallUserApiHook

LONG gcCallUserApiHook = 0

Definition at line 35 of file usrapihk.c.

Referenced by BeginIfHookedUserApiHook(), ClearUserApiHook(), and EndUserApiHook().

◆ gcLoadUserApiHook

DWORD gcLoadUserApiHook = 0

Definition at line 34 of file usrapihk.c.

Referenced by ClearUserApiHook(), EndUserApiHook(), and InitUserApiHook().

◆ gcsUserApiHook

RTL_CRITICAL_SECTION gcsUserApiHook

Definition at line 39 of file usrapihk.c.

Referenced by ClearUserApiHook(), EndUserApiHook(), Init(), and InitUserApiHook().

◆ gfUserApiHook

DWORD gfUserApiHook = 0

Definition at line 36 of file usrapihk.c.

Referenced by ClearUserApiHook(), InitUserApiHook(), and IsInsideUserApiHook().

◆ ghmodUserApiHook

◆ gpfnInitUserApi

USERAPIHOOKPROC gpfnInitUserApi

◆ grgbDlgLiteHookMsg

BYTE grgbDlgLiteHookMsg[128]

Definition at line 43 of file usrapihk.c.

Referenced by InitUserApiHook().

◆ grgbDwpLiteHookMsg

BYTE grgbDwpLiteHookMsg[128]

Definition at line 41 of file usrapihk.c.

Referenced by InitUserApiHook().

◆ grgbWndLiteHookMsg

BYTE grgbWndLiteHookMsg[128]

Definition at line 42 of file usrapihk.c.

Referenced by InitUserApiHook().

◆ guah