#pragma once #define MAXCURICONHANDLES 4096 typedef struct tagCURICON_PROCESS { LIST_ENTRY ListEntry; PPROCESSINFO Process; } CURICON_PROCESS, *PCURICON_PROCESS; typedef struct _CURICON_OBJECT { PROCMARKHEAD head; LIST_ENTRY ListEntry; HANDLE Self; LIST_ENTRY ProcessList; HMODULE hModule; HRSRC hRsrc; HRSRC hGroupRsrc; SIZE Size; BYTE Shadow; ICONINFO IconInfo; } CURICON_OBJECT, *PCURICON_OBJECT; typedef struct _CURSORCLIP_INFO { BOOL IsClipped; UINT Left; UINT Top; UINT Right; UINT Bottom; } CURSORCLIP_INFO, *PCURSORCLIP_INFO; typedef struct _CURSORACCELERATION_INFO { UINT FirstThreshold; UINT SecondThreshold; UINT Acceleration; } CURSORACCELERATION_INFO, *PCURSORACCELERATION_INFO; typedef struct _SYSTEM_CURSORINFO { BOOL Enabled; BOOL ClickLockActive; DWORD ClickLockTime; // BOOL SwapButtons; UINT ButtonsDown; CURSORCLIP_INFO CursorClipInfo; PCURICON_OBJECT CurrentCursorObject; INT ShowingCursor; /* UINT WheelScroLines; UINT WheelScroChars; UINT DblClickSpeed; UINT DblClickWidth; UINT DblClickHeight; UINT MouseHoverTime; UINT MouseHoverWidth; UINT MouseHoverHeight; UINT MouseSpeed; CURSORACCELERATION_INFO CursorAccelerationInfo; */ DWORD LastBtnDown; LONG LastBtnDownX; LONG LastBtnDownY; HANDLE LastClkWnd; BOOL ScreenSaverRunning; } SYSTEM_CURSORINFO, *PSYSTEM_CURSORINFO; BOOL FASTCALL InitCursorImpl(); PCURICON_OBJECT FASTCALL IntCreateCurIconHandle(); VOID FASTCALL IntCleanupCurIcons(struct _EPROCESS *Process, PPROCESSINFO Win32Process); BOOL UserDrawIconEx(HDC hDc, INT xLeft, INT yTop, PCURICON_OBJECT pIcon, INT cxWidth, INT cyHeight, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags); PCURICON_OBJECT FASTCALL UserGetCurIconObject(HCURSOR hCurIcon); BOOL UserSetCursorPos( INT x, INT y); int UserShowCursor(BOOL bShow); PSYSTEM_CURSORINFO FASTCALL IntGetSysCursorInfo(); #define IntReleaseCurIconObject(CurIconObj) \ UserDereferenceObject(CurIconObj) ULONG NTAPI GreSetPointerShape( HDC hdc, HBITMAP hbmMask, HBITMAP hbmColor, LONG xHot, LONG yHot, LONG x, LONG y); VOID NTAPI GreMovePointer( HDC hdc, LONG x, LONG y); /* EOF */