ReactOS 0.4.15-dev-7918-g2a2556c
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:370
@ uahStop
Definition: undocuser.h:366
@ uahShutdown
Definition: undocuser.h:367
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:328
DWORD Size
Definition: undocuser.h:329
#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:2084

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:345

Referenced by InitUserApiHook(), and ResetUserApiHook().

◆ GetRealWindowOwner()

DWORD WINAPI GetRealWindowOwner ( HWND  hwnd)

Definition at line 1899 of file window.c.

1900{
1902}
#define QUERY_WINDOW_REAL_ID
Definition: ntuser.h:2832
DWORD_PTR NTAPI NtUserQueryWindow(HWND hWnd, DWORD Index)
Definition: window.c:4189
_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:356
UAHOWP WndProcArray
Definition: undocuser.h:349
UAHOWP DlgProcArray
Definition: undocuser.h:352
UAHOWP DefWndProcArray
Definition: undocuser.h:341
@ uahLoadInit
Definition: undocuser.h:365
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 @1632 Msg[]
unsigned int UINT
Definition: ndis.h:50
#define WM_SETFOCUS
Definition: winuser.h:1613

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: debug.h:110
#define _SEH2_END
Definition: filesup.c:22
#define _SEH2_TRY
Definition: filesup.c:19
GLbitfield flags
Definition: glext.h:7161
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:34
MDIREDRAWFRAME MDIRedrawFrame
Definition: undocuser.h:359
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:888
#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:976
#define WS_EX_TOOLWINDOW
Definition: winuser.h:404
#define SM_CYSMCAPTION
Definition: winuser.h:1014
BOOL WINAPI InflateRect(_Inout_ LPRECT, _In_ int, _In_ int)
#define SM_CYCAPTION
Definition: winuser.h:963
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 818 of file defwnd.c.

822{
823 LRESULT Result = 0;
824 PWND Wnd;
825
826 Wnd = ValidateHwnd(hWnd);
827
828 if ( !Wnd &&
830 Msg != WM_CTLCOLORBTN &&
831 Msg != WM_CTLCOLORDLG &&
833 return 0;
834
836 switch (Msg)
837 {
838 case WM_NCCREATE:
839 {
840 if ( Wnd &&
841 Wnd->style & (WS_HSCROLL | WS_VSCROLL) )
842 {
843 if (!Wnd->pSBInfo)
844 {
845 SCROLLINFO si = {sizeof si, SIF_ALL, 0, 100, 0, 0, 0};
848 }
849 }
850
851 if (lParam)
852 {
854 /* check for string, as static icons, bitmaps (SS_ICON, SS_BITMAP)
855 * may have child window IDs instead of window name */
856 if (HIWORD(cs->lpszName))
857 {
858 DefSetText(hWnd, (PCWSTR)cs->lpszName, TRUE);
859 }
860 Result = 1;
861 }
862 break;
863 }
864
865 case WM_GETTEXTLENGTH:
866 {
867 PWSTR buf;
868 ULONG len;
869
870 if (Wnd != NULL && Wnd->strName.Length != 0)
871 {
873 if (buf != NULL &&
875 buf,
876 Wnd->strName.Length)))
877 {
878 Result = (LRESULT) len;
879 }
880 }
881 else Result = 0L;
882
883 break;
884 }
885
886 case WM_GETTEXT:
887 {
888 PWSTR buf = NULL;
889 PSTR outbuf = (PSTR)lParam;
890 SIZE_T copy;
891
892 if (Wnd != NULL && wParam != 0)
893 {
894 if (Wnd->strName.Buffer != NULL)
896 else
897 outbuf[0] = L'\0';
898
899 if (buf != NULL)
900 {
901 if (Wnd->strName.Length != 0)
902 {
903 copy = min(Wnd->strName.Length / sizeof(WCHAR), wParam - 1);
905 0,
906 buf,
907 copy,
908 outbuf,
909 wParam,
910 NULL,
911 NULL);
912 outbuf[Result] = '\0';
913 }
914 else
915 outbuf[0] = '\0';
916 }
917 }
918 break;
919 }
920
921 case WM_SETTEXT:
922 {
924
926 {
928 IntNotifyWinEvent(EVENT_OBJECT_NAMECHANGE, hWnd, OBJID_WINDOW, CHILDID_SELF, 0);
929 }
930 Result = 1;
931 break;
932 }
933
934 case WM_IME_KEYDOWN:
935 {
937 break;
938 }
939
940 case WM_IME_KEYUP:
941 {
943 break;
944 }
945
946 case WM_IME_CHAR:
947 {
948 if (HIBYTE(wParam))
951 break;
952 }
953
954 case WM_IME_COMPOSITION:
955 if (lParam & GCS_RESULTSTR)
956 {
957 LONG size, i;
958 unsigned char lead = 0;
959 char *buf = NULL;
960 HIMC himc = IMM_FN(ImmGetContext)( hWnd );
961
962 if (himc)
963 {
965 {
966 if (!(buf = HeapAlloc( GetProcessHeap(), 0, size ))) size = 0;
968 }
969 IMM_FN(ImmReleaseContext)( hWnd, himc );
970
971 for (i = 0; i < size; i++)
972 {
973 unsigned char c = buf[i];
974 if (!lead)
975 {
976 if (IsDBCSLeadByte( c ))
977 lead = c;
978 else
980 }
981 else
982 {
983 SendMessageA( hWnd, WM_IME_CHAR, MAKEWORD(c, lead), 1 );
984 lead = 0;
985 }
986 }
987 HeapFree( GetProcessHeap(), 0, buf );
988 }
989 }
990 /* fall through */
991 case WM_IME_STARTCOMPOSITION:
992 case WM_IME_ENDCOMPOSITION:
993 case WM_IME_SELECT:
994 case WM_IME_NOTIFY:
995 case WM_IME_CONTROL:
997NormalImeMsgHandling:
998 {
999 HWND hwndIME;
1000
1001 if (GetWin32ClientInfo()->dwTIFlags & TIF_DISABLEIME)
1002 {
1003 TRACE("This thread's IME is disabled\n");
1004 break;
1005 }
1006
1007 hwndIME = IMM_FN(ImmGetDefaultIMEWnd)(hWnd);
1008 if (!hwndIME)
1009 {
1010 ERR("hwndIME was NULL\n");
1011 break;
1012 }
1013
1014 if (hwndIME == hWnd)
1015 {
1017 break;
1018 }
1019
1020 Result = SendMessageA(hwndIME, Msg, wParam, lParam);
1021 break;
1022 }
1023
1024 case WM_IME_SYSTEM:
1025 {
1026 if (wParam == 4)
1027 break;
1028
1029 goto NormalImeMsgHandling;
1030 }
1031
1032 default:
1034 }
1035
1037 return Result;
1038}
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
LONG WINAPI ImmGetCompositionStringA(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
Definition: compstr.c:856
DWORD HIMC
Definition: dimm.idl:75
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#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
HWND WINAPI ImmGetDefaultIMEWnd(HWND hWnd)
Definition: ime.c:890
HIMC WINAPI ImmGetContext(HWND hWnd)
Definition: imm.c:1044
BOOL WINAPI ImmReleaseContext(HWND hWnd, HIMC hIMC)
Definition: imm.c:1085
#define ValidateHwnd(hwnd)
Definition: precomp.h:85
static PVOID FASTCALL DesktopPtrToUser(PVOID ptr)
Definition: utils.c:324
BOOL WINAPI IsDBCSLeadByte(BYTE TestByte)
Definition: nls.c:2359
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 GCS_RESULTSTR
Definition: imm.h:234
#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 L(x)
Definition: ntvdm.h:50
#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:935
#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
#define WM_IME_SYSTEM
Definition: undocuser.h:60
LRESULT WINAPI User32DefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL bUnicode)
Definition: defwnd.c:317
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:4372
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:1839
#define WM_CTLCOLORSTATIC
Definition: winuser.h:1772
#define WM_GETTEXTLENGTH
Definition: winuser.h:1619
#define GetWindowLongPtrW
Definition: winuser.h:4829
#define WM_KEYUP
Definition: winuser.h:1716
#define WM_IME_NOTIFY
Definition: winuser.h:1830
#define WM_IME_KEYDOWN
Definition: winuser.h:1838
#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:1618
#define WM_CTLCOLORMSGBOX
Definition: winuser.h:1766
#define WM_NCCREATE
Definition: winuser.h:1683
#define WM_IME_SETCONTEXT
Definition: winuser.h:1829
#define WM_CTLCOLORBTN
Definition: winuser.h:1769
#define WM_SETTEXT
Definition: winuser.h:1617
#define WM_IME_CHAR
Definition: winuser.h:1834
#define SIF_ALL
Definition: winuser.h:1232
#define DC_TEXT
Definition: winuser.h:430
#define WM_CHAR
Definition: winuser.h:1717
#define WM_IME_CONTROL
Definition: winuser.h:1831
int WINAPI SetScrollInfo(_In_ HWND, _In_ int, _In_ LPCSCROLLINFO, _In_ BOOL)
#define WM_IME_SELECT
Definition: winuser.h:1833
#define WM_KEYDOWN
Definition: winuser.h:1715
#define GWL_STYLE
Definition: winuser.h:852
BOOL WINAPI PostMessageA(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_CTLCOLORDLG
Definition: winuser.h:1770
#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 1042 of file defwnd.c.

1046{
1047 LRESULT Result = 0;
1048 PWND Wnd;
1049
1050 Wnd = ValidateHwnd(hWnd);
1051
1052 if ( !Wnd &&
1054 Msg != WM_CTLCOLORBTN &&
1055 Msg != WM_CTLCOLORDLG &&
1057 return 0;
1058
1060 switch (Msg)
1061 {
1062 case WM_NCCREATE:
1063 {
1064 if ( Wnd &&
1065 Wnd->style & (WS_HSCROLL | WS_VSCROLL) )
1066 {
1067 if (!Wnd->pSBInfo)
1068 {
1069 SCROLLINFO si = {sizeof si, SIF_ALL, 0, 100, 0, 0, 0};
1070 if (Wnd->style & WS_HSCROLL)
1071 SetScrollInfo( hWnd, SB_HORZ, &si, FALSE );
1072 if (Wnd->style & WS_VSCROLL)
1073 SetScrollInfo( hWnd, SB_VERT, &si, FALSE );
1074 }
1075 }
1076
1077 if (lParam)
1078 {
1080 /* check for string, as static icons, bitmaps (SS_ICON, SS_BITMAP)
1081 * may have child window IDs instead of window name */
1082 if (HIWORD(cs->lpszName))
1083 {
1084 DefSetText(hWnd, cs->lpszName, FALSE);
1085 }
1086 Result = 1;
1087 }
1088 break;
1089 }
1090
1091 case WM_GETTEXTLENGTH:
1092 {
1093 PWSTR buf;
1094 ULONG len;
1095
1096 if (Wnd != NULL && Wnd->strName.Length != 0)
1097 {
1099 if (buf != NULL &&
1101 buf,
1102 Wnd->strName.Length)))
1103 {
1104 Result = (LRESULT) (Wnd->strName.Length / sizeof(WCHAR));
1105 }
1106 }
1107 else Result = 0L;
1108
1109 break;
1110 }
1111
1112 case WM_GETTEXT:
1113 {
1114 PWSTR buf = NULL;
1115 PWSTR outbuf = (PWSTR)lParam;
1116
1117 if (Wnd != NULL && wParam != 0)
1118 {
1119 if (Wnd->strName.Buffer != NULL)
1121 else
1122 outbuf[0] = L'\0';
1123
1124 if (buf != NULL)
1125 {
1126 if (Wnd->strName.Length != 0)
1127 {
1128 Result = min(Wnd->strName.Length / sizeof(WCHAR), wParam - 1);
1129 RtlCopyMemory(outbuf,
1130 buf,
1131 Result * sizeof(WCHAR));
1132 outbuf[Result] = L'\0';
1133 }
1134 else
1135 outbuf[0] = L'\0';
1136 }
1137 }
1138 break;
1139 }
1140
1141 case WM_SETTEXT:
1142 {
1144
1147 Result = 1;
1148 break;
1149 }
1150
1151 case WM_IME_CHAR:
1152 {
1154 Result = 0;
1155 break;
1156 }
1157
1158 case WM_IME_KEYDOWN:
1159 {
1161 break;
1162 }
1163
1164 case WM_IME_KEYUP:
1165 {
1167 break;
1168 }
1169
1170 case WM_IME_COMPOSITION:
1171 if (lParam & GCS_RESULTSTR)
1172 {
1173 LONG size, i;
1174 WCHAR *buf = NULL;
1175 HIMC himc = IMM_FN(ImmGetContext)( hWnd );
1176
1177 if (himc)
1178 {
1180 {
1181 if (!(buf = HeapAlloc( GetProcessHeap(), 0, size * sizeof(WCHAR) ))) size = 0;
1182 else size = IMM_FN(ImmGetCompositionStringW)( himc, GCS_RESULTSTR, buf, size * sizeof(WCHAR) );
1183 }
1184 IMM_FN(ImmReleaseContext)( hWnd, himc );
1185
1186 for (i = 0; i < size / sizeof(WCHAR); i++)
1188 HeapFree( GetProcessHeap(), 0, buf );
1189 }
1190 }
1191 /* fall through */
1192 case WM_IME_STARTCOMPOSITION:
1193 case WM_IME_ENDCOMPOSITION:
1194 case WM_IME_SELECT:
1195 case WM_IME_NOTIFY:
1196 case WM_IME_CONTROL:
1197 case WM_IME_SETCONTEXT:
1198NormalImeMsgHandling:
1199 {
1200 HWND hwndIME;
1201
1202 if (GetWin32ClientInfo()->dwTIFlags & TIF_DISABLEIME)
1203 {
1204 TRACE("This thread's IME is disabled\n");
1205 break;
1206 }
1207
1208 hwndIME = IMM_FN(ImmGetDefaultIMEWnd)(hWnd);
1209 if (!hwndIME)
1210 {
1211 ERR("hwndIME was NULL\n");
1212 break;
1213 }
1214
1215 if (hwndIME == hWnd)
1216 {
1217 ImeWndProc_common(hwndIME, Msg, wParam, lParam, TRUE);
1218 break;
1219 }
1220
1221 Result = SendMessageW(hwndIME, Msg, wParam, lParam);
1222 break;
1223 }
1224
1225 case WM_IME_SYSTEM:
1226 {
1227 if (wParam == 4)
1228 break;
1229
1230 goto NormalImeMsgHandling;
1231 }
1232
1233 default:
1235 }
1237
1238 return Result;
1239}
LONG WINAPI ImmGetCompositionStringW(HIMC hIMC, DWORD dwIndex, LPVOID lpBuf, DWORD dwBufLen)
Definition: compstr.c:899
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: debug.h:115
#define RGB(r, g, b)
Definition: precomp.h:71
int32_t INT
Definition: typedefs.h:58
#define DFCS_MENUARROWUP
Definition: undocuser.h:158
#define DFCS_MENUARROWDOWN
Definition: undocuser.h:159
int ret
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:918
#define DFC_SCROLL
Definition: winuser.h:475
#define COLOR_MENU
Definition: winuser.h:917
#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:1182
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:1065

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:1331
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:2168
#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:1369
#define SPI_GETICONTITLELOGFONT
Definition: winuser.h:1380
#define SPI_SETICONTITLELOGFONT
Definition: winuser.h:1383

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:2450

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: debug.h:112
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:376
LPCWSTR m_dllname1
Definition: undocuser.h:375

◆ 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:3572
BOOL NTAPI NtUserEnableScrollBar(HWND hWnd, UINT wSBflags, UINT wArrows)
Definition: scrollbar.c:1242
SYSTEMPARAMETERSINFOA SystemParametersInfoA
Definition: undocuser.h:354
WNDPROC_OWP PostWndProc
Definition: undocuser.h:348
GETREALWINDOWOWNER GetRealWindowOwner
Definition: undocuser.h:360
SETWINDOWRGN SetWindowRgn
Definition: undocuser.h:346
WNDPROC_OWP PreWndProc
Definition: undocuser.h:347
GETSCROLLINFO GetScrollInfo
Definition: undocuser.h:342
SYSTEMPARAMETERSINFOW SystemParametersInfoW
Definition: undocuser.h:355
GETSYSTEMMETRICS GetSystemMetrics
Definition: undocuser.h:353
DRAWFRAMECONTROL DrawFrameControl
Definition: undocuser.h:357
ADJUSTWINDOWRECTEX AdjustWindowRectEx
Definition: undocuser.h:345
WNDPROC DefWindowProcA
Definition: undocuser.h:339
ENABLESCROLLBAR EnableScrollBar
Definition: undocuser.h:344
WNDPROC_OWP PreDefDlgProc
Definition: undocuser.h:350
WNDPROC_OWP PostDefDlgProc
Definition: undocuser.h:351
WNDPROC DefWindowProcW
Definition: undocuser.h:340
DRAWCAPTION DrawCaption
Definition: undocuser.h:358
SETSCROLLINFO SetScrollInfo
Definition: undocuser.h:343
struct tagUSERAPIHOOK USERAPIHOOK
LRESULT WINAPI RealDefWindowProcW(HWND, UINT, WPARAM, LPARAM)
Definition: defwnd.c:1042
BOOL WINAPI RealGetScrollInfo(HWND, INT, LPSCROLLINFO)
Definition: scrollbar.c:1512
LRESULT WINAPI RealDefWindowProcA(HWND, UINT, WPARAM, LPARAM)
Definition: defwnd.c:818
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:1899
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