How to Set mouse cursor position to a specified point on screen in C#?
Solution 1:
The following will set the mouse position and perform a click:
public static void ClickSomePoint() {
// Set the cursor position
System.Windows.Forms.Cursor.Position = new Point(20, 35);
DoClickMouse(0x2); // Left mouse button down
DoClickMouse(0x4); // Left mouse button up
}
static void DoClickMouse(int mouseButton) {
var input = new INPUT() {
dwType = 0, // Mouse input
mi = new MOUSEINPUT() { dwFlags = mouseButton }
};
if (SendInput(1, input, Marshal.SizeOf(input)) == 0) {
throw new Exception();
}
}
[StructLayout(LayoutKind.Sequential)]
struct MOUSEINPUT {
int dx;
int dy;
int mouseData;
public int dwFlags;
int time;
IntPtr dwExtraInfo;
}
struct INPUT {
public uint dwType;
public MOUSEINPUT mi;
}
[DllImport("user32.dll", SetLastError=true)]
static extern uint SendInput(uint cInputs, INPUT input, int size);
Just keep in mind that this could be extremely annoying for a user.
:)
If you want to click a button on your form you can use the 'PerformClick()'
method.
Solution 2:
Get and set mouse position in Windows 10:
Much simpler in c# .NET Framework 4.0 using Cursor.Position Property
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.cursor.position?view=netcore-3.1
public static void ClickSomePoint()
{
// get mouse position
System.Drawing.Point screenPos = System.Windows.Forms.Cursor.Position;
// create X,Y point (0,0) explicitly with System.Drawing
System.Drawing.Point leftTop = new System.Drawing.Point(0,0);
// set mouse position
Cursor.Position = leftTop;
Console.WriteLine(screenPos);
}
Solution 3:
The easiest way to position the mouse:
Left zero for left position and zero right for top position (you can change it to any number you want)(to use this code you need to use using System.Drawing
and using System.Windows.Forms
namespace)
Cursor.Position = new Point(0,0);