Скрыть(сделать невидимым) курсор в Windows 10 ГЛОБАЛЬНО ( во всей ОС, во всех программах)
Вопрос звучит глупо и неэтично в какой-то мере. И, все же, как это сделать?
Мне не нужно обьяснять почему это плохая идея. Мне нужно понять как это сделать.
При этом НЕ МЕНЯЯ картинку курсора на "невидимую" в настройках винды)
И, конечно же, сама мышка должна работать в штатном режиме. То есть решение "убрать курсор на невидимую позицию" не подходит. Мне нужно именно сделать невидимым курсор.
Upd: Решение:
[DllImport("user32.dll")]
static extern int ShowCursor(bool bShow);
не предлагать. На Windows 10 глобально не работает. Проверьте сами :)
А
System.Windows.Input.Mouse.OverrideCursor = Cursors.None;
работает так же исключительно в окне программы.
Ответы (2 шт):
[DllImport("user32.dll")]
public static extern int ShowCursor(bool bShow);
Не 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)