Prerequisites:
- I am trying to create a mouse hiding application that hides a custom mouse from the screen after a certain time.
- I tried many things, and using SetCursor only hides the mouse from the current application, mine should be able to sit the tray (for example) and still function.
- I think I found a solution using SetSystemCursor, except for one problem.
MY PROBLEM:
- I need to catch any kind of mouse cursor and replace the same mouse pointer.
- When replacing the mouse, I need to specify the identifier of the type of mouse that I would like to replace with the mouse that the descriptor refers to, but none of the functions that I use provide me with the copied mouse identifier (or type).
MY QUESTION:
- , 0,0, ? (Unhiding ).
- 0,0 OCR_NORMAL mouse? ( .)
- , /id , ?
:
[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;
public Int32 flags;
public IntPtr hCursor;
public POINT ptScreenPos;
}
private POINT cursorPosition;
private IntPtr cursorHandle;
private bool mouseVisible = false;
private const uint OCR_NORMAL = 32512;
CURSORINFO pci;
pci.cbSize = Marshal.SizeOf(typeof(CURSORINFO));
GetCursorInfo(out pci);
cursorPosition = pci.ptScreenPos;
cursorHandle = CopyIcon(pci.hCursor);
IntPtr cursor = LoadCursorFromFile(@"./Resources/Cursors/blank.cur");
SetSystemCursor(cursor, OCR_NORMAL);
mouseVisible = false;
bool retval = SetSystemCursor(cursorHandle, OCR_NORMAL);
mouseVisible = true;