How do I get the mouse position? I want it in term of screen position.
I start my program I want to set to the current mouse position.
Location.X = ??
Location.Y = ??
Edit: This must happen before the form is created.
How do I get the mouse position? I want it in term of screen position.
I start my program I want to set to the current mouse position.
Location.X = ??
Location.Y = ??
Edit: This must happen before the form is created.
You should use System.Windows.Forms.Cursor.Position: \"A Point that represents the cursor\'s position in screen coordinates.\"
If you don\'t want to reference Forms you can use interop to get the cursor position:
/// <summary>
/// Struct representing a point.
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y;
public static implicit operator Point(POINT point)
{
return new Point(point.X, point.Y);
}
}
/// <summary>
/// Retrieves the cursor\'s position, in screen coordinates.
/// </summary>
/// <see>See MSDN documentation for further information.</see>
[DllImport(\"user32.dll\")]
public static extern bool GetCursorPos(out POINT lpPoint);
public static Point GetCursorPosition()
{
POINT lpPoint;
GetCursorPos(out lpPoint);
//bool success = User32.GetCursorPos(out lpPoint);
// if (!success)
return lpPoint;
}
Cursor.Position will get the current screen poisition of the mouse (if you are in a Control, the MousePosition property will also get the same value).
To set the mouse position, you will have to use Cursor.Position
and give it a new Point:
Cursor.Position = new Point(x, y);
You can do this in your Main
method before creating your form.
To answer your specific example:
// your example
Location.X = Cursor.Position.X;
Location.Y = Cursor.Position.Y;
// sample code
Console.WriteLine(\"x: \" + Cursor.Position.X + \" y: \" + Cursor.Position.Y);
Don\'t forget to add using System.Windows.Forms;
, and adding the reference to it (right click on references > add reference > .NET tab > Systems.Windows.Forms > ok)
System.Windows.Forms.Control.MousePosition
Gets the position of the mouse cursor in screen coordinates. \"The Position property is identical to the Control.MousePosition property.\"
To get the position look at the OnMouseMove event. The MouseEventArgs will give you the x an y positions...
protected override void OnMouseMove(MouseEventArgs mouseEv)
To set the mouse position use the Cursor.Position property.
http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.position.aspx
internal static class CursorPosition {
[StructLayout(LayoutKind.Sequential)]
public struct PointInter {
public int X;
public int Y;
public static explicit operator Point(PointInter point) => new Point(point.X, point.Y);
}
[DllImport(\"user32.dll\")]
public static extern bool GetCursorPos(out PointInter lpPoint);
// For your convenience
public static Point GetCursorPosition() {
PointInter lpPoint;
GetCursorPos(out lpPoint);
return (Point) lpPoint;
}
}
Initialize the current cursor. Use it to get the position of X and Y
this.Cursor = new Cursor(Cursor.Current.Handle);
int posX = Cursor.Position.X;
int posY = Cursor.Position.Y;
Also, if you need to get current position in form\'s area, try:
Console.WriteLine(\"Current mouse position in form\'s area is \" +
(Control.MousePosition.X - this.Location.X - 8).ToString() +
\"x\" +
(Control.MousePosition.Y - this.Location.Y - 30).ToString()
);
Although, 8 and 30 integers were found by experimenting.
Would be awesome if someone could explain why exactly these.