Systemcursor „verstecken“

HINTERGRUND:Ich versuche, eine Anwendung zum Ausblenden von Mäusen zu erstellen, mit der die Maus des Benutzers nach einer festgelegten Zeit vom Bildschirm ausgeblendet wird.Ich habe viele Dinge ausprobiert und benutztSetCursor versteckt nur die maus vor der aktuellen anwendung, meins muss in der lade sitzen können (zum beispiel) und trotzdem funktionieren.Ich denke, ich habe mit SetSystemCursor eine Lösung gefunden, mit Ausnahme eines Problems.MEIN PROBLEM:Ich muss in der Lage sein, jede Art von Mauszeiger zu erfassen und genau dieselbe Art von Mauszeiger zu ersetzen.Beim Ersetzen der Maus muss die ID des Maustyps angegeben werden, den ich durch die vom Handle angegebene Maus ersetzen möchte, aber keine der von mir verwendeten Funktionen gibt die ID (oder den Typ) der kopierten Maus an .MEINE FRAGE:Wäre es ausreichend, dies auf diese Weise fortzusetzen, aber die Maus zuerst auf 0,0 zu bewegen, sie auszublenden und sie nach dem Ausblenden wieder an ihren ursprünglichen Ort zu verschieben? (Das Einblenden erfolgt durch einfaches Bewegen der Maus.)Wäre eine Maus mit 0,0 immer eine OCR_NORMAL-Maus? (Der Standardpfeil.)Wenn nicht, wie kann ich den Maustyp / die ID ermitteln, um die richtige Maus durch den richtigen Griff zu ersetzen?QUELLE:
<code>[DllImport("user32.dll")]
public static extern IntPtr LoadCursorFromFile(string lpFileName);
[DllImport("user32.dll")]
public static extern bool SetSystemCursor(IntPtr hcur, uint id);
[DllImport("user32.dll")]
static extern bool GetCursorInfo(out CURSORINFO pci);

[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public Int32 x;
public Int32 y;
}

[StructLayout(LayoutKind.Sequential)]
struct CURSORINFO
{
public Int32 cbSize;        // Specifies the size, in bytes, of the structure. 
// The caller must set this to Marshal.SizeOf(typeof(CURSORINFO)).
public Int32 flags;         // Specifies the cursor state. This parameter can be one of the following values:
//    0             The cursor is hidden.
//    CURSOR_SHOWING    The cursor is showing.
public IntPtr hCursor;          // Handle to the cursor. 
public POINT ptScreenPos;       // A POINT structure that receives the screen coordinates of the cursor. 
}

private POINT cursorPosition;
private IntPtr cursorHandle;
private bool mouseVisible = false;
private const uint OCR_NORMAL = 32512;

//Get the current mouse, so we can replace it once we want to show the mouse again.
CURSORINFO pci;
pci.cbSize = Marshal.SizeOf(typeof(CURSORINFO));
GetCursorInfo(out pci);
cursorPosition = pci.ptScreenPos;
cursorHandle = CopyIcon(pci.hCursor);

//Overwrite the current normal cursor with a blank cursor to "hide" it.
IntPtr cursor = LoadCursorFromFile(@"./Resources/Cursors/blank.cur");
SetSystemCursor(cursor, OCR_NORMAL);
mouseVisible = false;

//PROCESSING...

//Show the mouse with the mouse handle we copied earlier.
bool retval = SetSystemCursor(cursorHandle, OCR_NORMAL);
mouseVisible = true;
</code>

Antworten auf die Frage(2)

Ihre Antwort auf die Frage