18 #if 0 // Kept for referencing. 38 TRACE(
"Desktop W Class Atom! hWnd 0x%x, Msg %d\n", Wnd,
Msg);
46 case WM_DISPLAYCHANGE:
52 TRACE(
"Desktop lResult %d\n", lResult);
79 #define COPYS(f,len) MultiByteToWideChar ( CP_THREAD_ACP, 0, pA->f, len, pW->f, len ) 80 #define COPYN(f) pW->f = pA->f 91 COPYN(lfOutPrecision);
92 COPYN(lfClipPrecision);
94 COPYN(lfPitchAndFamily);
105 #define COPYS(f,len) WideCharToMultiByte ( CP_THREAD_ACP, 0, pW->f, len, pA->f, len, NULL, NULL ) 106 #define COPYN(f) pA->f = pW->f 111 COPYN(lfOrientation);
117 COPYN(lfOutPrecision);
118 COPYN(lfClipPrecision);
120 COPYN(lfPitchAndFamily);
132 return gpsi->aiSysMet[nIndex];
162 ERR(
"Got exception in hooked GetSystemMetrics!\n");
188 case SPI_GETNONCLIENTMETRICS:
190 LPNONCLIENTMETRICSA pnclma = (LPNONCLIENTMETRICSA)pvParam;
191 NONCLIENTMETRICSW nclmw;
192 if(pnclma->cbSize !=
sizeof(NONCLIENTMETRICSA))
197 nclmw.cbSize =
sizeof(NONCLIENTMETRICSW);
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));
219 case SPI_SETNONCLIENTMETRICS:
221 LPNONCLIENTMETRICSA pnclma = (LPNONCLIENTMETRICSA)pvParam;
222 NONCLIENTMETRICSW nclmw;
223 if(pnclma->cbSize !=
sizeof(NONCLIENTMETRICSA))
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));
247 case SPI_GETICONMETRICS:
249 LPICONMETRICSA picma = (LPICONMETRICSA)pvParam;
251 if(picma->cbSize !=
sizeof(ICONMETRICSA))
256 icmw.cbSize =
sizeof(ICONMETRICSW);
261 picma->iHorzSpacing = icmw.iHorzSpacing;
262 picma->iVertSpacing = icmw.iVertSpacing;
263 picma->iTitleWrap = icmw.iTitleWrap;
267 case SPI_SETICONMETRICS:
269 LPICONMETRICSA picma = (LPICONMETRICSA)pvParam;
271 if(picma->cbSize !=
sizeof(ICONMETRICSA))
276 icmw.cbSize =
sizeof(ICONMETRICSW);
277 icmw.iHorzSpacing = picma->iHorzSpacing;
278 icmw.iVertSpacing = picma->iVertSpacing;
279 icmw.iTitleWrap = picma->iTitleWrap;
309 RtlInitEmptyAnsiString(&astrWallpaper, pvParam, uiParam);
323 ERR(
"RtlCreateUnicodeStringFromAsciiz failed\n");
326 pvParam = &ustrWallpaper;
385 ERR(
"Got exception in hooked SystemParametersInfoA!\n");
418 ERR(
"Got exception in hooked SystemParametersInfoW!\n");
520 HWINSTA WindowStation,
534 HWINSTA WindowStation,
558 sizeof(*GetThreadConsoleDesktopRequest));
655 if (
pdi)
return pdi->hShellWindow;
#define ERROR_INVALID_PARAMETER
NAMEENUMPROCW DESKTOPENUMPROCW
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
BOOL FASTCALL EndUserApiHook(VOID)
HWND WINAPI GetShellWindow(VOID)
#define WM_SYSCOLORCHANGE
int WINAPI GetSystemMetrics(int nIndex)
#define OBJ_CASE_INSENSITIVE
#define USERSRV_SERVERDLL_INDEX
#define SPI_SETDESKWALLPAPER
NTSTATUS NTAPI CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage, IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL, IN CSR_API_NUMBER ApiNumber, IN ULONG DataLength)
BOOL WINAPI EnumDesktopsW(HWINSTA WindowStation, DESKTOPENUMPROCW EnumFunc, LPARAM Context)
HDESK WINAPI OpenDesktopA(LPCSTR lpszDesktop, DWORD dwFlags, BOOL fInherit, ACCESS_MASK dwDesiredAccess)
BOOL FASTCALL EnumNamesW(HWINSTA WindowStation, NAMEENUMPROCW EnumFunc, LPARAM Context, BOOL Desktops)
USER_GET_THREAD_CONSOLE_DESKTOP GetThreadConsoleDesktopRequest
DEVMODEW *WINAPI GdiConvertToDevmodeW(const DEVMODEA *)
HDESK APIENTRY NtUserOpenDesktop(POBJECT_ATTRIBUTES ObjectAttributes, DWORD dwFlags, ACCESS_MASK dwDesiredAccess)
VOID WINAPI LogFontW2A(LPLOGFONTA pA, CONST LOGFONTW *pW)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI RealSystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
SYSTEMPARAMETERSINFOW SystemParametersInfoW
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
NAMEENUMPROCA DESKTOPENUMPROCA
const struct builtin_class_descr DESKTOP_builtin_class
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
BOOL WINAPI SetShellWindow(HWND hwndShell)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
static BOOL CALLBACK EnumFunc(_In_ HWND hWnd, _In_ PCWSTR lpszString, _In_ HANDLE hData)
#define CSR_CREATE_API_NUMBER(ServerId, ApiId)
#define WM_QUERYNEWPALETTE
WINE_DEFAULT_DEBUG_CHANNEL(user32)
VOID WINAPI LogFontA2W(LPLOGFONTW pW, CONST LOGFONTA *pA)
HDESK WINAPI OpenDesktopW(LPCWSTR lpszDesktop, DWORD dwFlags, BOOL fInherit, ACCESS_MASK dwDesiredAccess)
GETSYSTEMMETRICS GetSystemMetrics
#define NT_SUCCESS(StatCode)
#define EXCEPTION_EXECUTE_HANDLER
HDESK WINAPI CreateDesktopA(LPCSTR lpszDesktop, LPCSTR lpszDevice, LPDEVMODEA pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa)
#define WM_PALETTECHANGED
BOOL WINAPI SetDeskWallpaper(LPCSTR filename)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
BOOL WINAPI SystemParametersInfoW(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
BOOL WINAPI RealSystemParametersInfoA(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
BOOL WINAPI SetShellWindowEx(HWND, HWND)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
HDESK APIENTRY NtUserCreateDesktop(POBJECT_ATTRIBUTES ObjectAttributes, PUNICODE_STRING lpszDesktopDevice, LPDEVMODEW lpdmw, DWORD dwFlags, ACCESS_MASK dwDesiredAccess)
BOOL NTAPI NtUserMessageCall(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, ULONG_PTR ResultInfo, DWORD dwType, BOOL Ansi)
union _USER_API_MESSAGE::@3488 Data
VOID WINAPI UserSetLastNTError(IN NTSTATUS Status)
#define SPI_SETICONTITLELOGFONT
BOOL FASTCALL EnumNamesA(HWINSTA WindowStation, NAMEENUMPROCA EnumFunc, LPARAM Context, BOOL Desktops)
SYSTEMPARAMETERSINFOA SystemParametersInfoA
LPVOID lpSecurityDescriptor
HCURSOR WINAPI SetCursor(_In_opt_ HCURSOR)
HWINSTA NTAPI NtUserGetProcessWindowStation(VOID)
BOOL NTAPI NtUserSystemParametersInfo(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
static __inline void LoadUserApiHook()
BOOL FASTCALL BeginIfHookedUserApiHook(VOID)
BOOL WINAPI EnumDesktopsA(HWINSTA WindowStation, DESKTOPENUMPROCA EnumFunc, LPARAM Context)
HDC WINAPI GetWindowDC(_In_opt_ HWND)
HWINSTA WINAPI GetProcessWindowStation(void)
#define SPI_GETICONTITLELOGFONT
LRESULT WINAPI DesktopWndProcW(HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam)
struct tagLOGFONTA * LPLOGFONTA
#define SPI_GETDESKWALLPAPER
BOOL WINAPI PaintDesktop(_In_ HDC)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define InitializeObjectAttributes(p, n, a, r, s)
#define _SEH2_EXCEPT(...)
static __inline PDESKTOPINFO GetThreadDesktopInfo(VOID)
HDESK WINAPI CreateDesktopW(LPCWSTR lpszDesktop, LPCWSTR lpszDevice, LPDEVMODEW pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa)
int WINAPI RealGetSystemMetrics(int nIndex)
HDESK APIENTRY NtUserGetThreadDesktop(DWORD dwThreadId, HDESK hConsoleDesktop)
BOOL WINAPI SystemParametersInfoA(UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni)
HDESK WINAPI GetThreadDesktop(DWORD dwThreadId)
_In_ LPWSTR _In_ ULONG _In_ ULONG _In_ ULONG _Out_ DEVINFO * pdi
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes