Скрыть(сделать невидимым) курсор в Windows 10 ГЛОБАЛЬНО ( во всей ОС, во всех программах)

Вопрос звучит глупо и неэтично в какой-то мере. И, все же, как это сделать?

Мне не нужно обьяснять почему это плохая идея. Мне нужно понять как это сделать.

При этом НЕ МЕНЯЯ картинку курсора на "невидимую" в настройках винды)

И, конечно же, сама мышка должна работать в штатном режиме. То есть решение "убрать курсор на невидимую позицию" не подходит. Мне нужно именно сделать невидимым курсор.


Upd: Решение:

[DllImport("user32.dll")]
static extern int ShowCursor(bool bShow);

не предлагать. На Windows 10 глобально не работает. Проверьте сами :)

А

System.Windows.Input.Mouse.OverrideCursor = Cursors.None;

работает так же исключительно в окне программы.


Ответы (2 шт):

Автор решения: Buki
[DllImport("user32.dll")]

public static extern int ShowCursor(bool bShow);
→ Ссылка
Автор решения: Clon OffTimer

Не C отлов мыши можно реализовать с помощью глобального хука, под C#вероятно можно использовать через Marshaling. Примитивное решение, поймать мышь и перерисовать ей курсор на прозрачный/свой собственный итд.

Скелетный код хука:

LRESULT CALLBACK HookMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if ((nCode == HC_ACTION) && (wParam == WM_MOUSEMOVE))
    {
        MSLLHOOKSTRUCT* p = (MSLLHOOKSTRUCT*)lParam;

        HWND hiWnd = WindowFromPoint(p->pt);
        if (hiWnd)
        {
            POINT pt = p->pt;
            ...
        }
        return CallNextHookEx(0, nCode, wParam, lParam);
     }
}

LowLevelMouseProc - чтение по теме https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms644986(v%3Dvs.85)

→ Ссылка