static MouseHider() { cursorIds = Enums.Values <User32Types.CursorName>().Cast <uint>().ToArray(); OriginalCursors = new IntPtr[cursorIds.Length]; blankCursors = new IntPtr[cursorIds.Length]; int i = 0; var blank = User32.CreateCursor(IntPtr.Zero, 0, 0, 32, 32, ((byte)0xFF).Repeat(32 * 4).ToArray(), ((byte)0x00).Repeat(32 * 4).ToArray()); foreach (var cursor in cursorIds) { var hc = User32.LoadCursor(IntPtr.Zero, (IntPtr)cursor); OriginalCursors[i] = User32.CopyImage(hc, 2, 0, 0, 0); blankCursors[i] = blank; i++; } AppDomain.CurrentDomain.ProcessExit += OnProcessExit; }