[c#] C #에서 마우스 위치 가져 오기
마우스 위치는 어떻게 얻습니까? 화면 위치 측면에서 원합니다.
현재 마우스 위치로 설정하려는 프로그램을 시작합니다.
Location.X = ??
Location.Y = ??
편집 : 양식이 생성되기 전에 발생해야합니다.
답변
System.Windows.Forms.Cursor.Position : “화면 좌표에서 커서의 위치를 나타내는 Point”를 사용해야 합니다.
답변
양식을 참조하지 않으려면 interop을 사용하여 커서 위치를 가져올 수 있습니다.
using System.Runtime.InteropServices;
using System.Windows; // Or use whatever point class you like for the implicit cast operator
using System.Drawing;
/// <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);
// NOTE: If you need error handling
// bool success = GetCursorPos(out lpPoint);
// if (!success)
return lpPoint;
}
답변
Cursor.Position 은 마우스의 현재 화면 위치를 가져옵니다 ( Control 에있는 경우 MousePosition 속성도 동일한 값을 얻습니다).
마우스 위치를 설정하려면 Cursor.Position
새 Point 를 사용 하고 지정해야합니다 .
Cursor.Position = new Point(x, y);
Main
양식을 작성하기 전에 방법 에서이 작업을 수행 할 수 있습니다 .
답변
구체적인 예에 답하려면 :
// your example
Location.X = Cursor.Position.X;
Location.Y = Cursor.Position.Y;
// sample code
Console.WriteLine("x: " + Cursor.Position.X + " y: " + Cursor.Position.Y);
를 using System.Windows.Forms;
추가하고 참조를 추가하는 것을 잊지 마십시오 (참조를 마우스 오른쪽 버튼으로 클릭> 참조 추가> .NET 탭> Systems.Windows.Forms> 확인).
답변
System.Windows.Forms.Control.MousePosition
화면 좌표에서 마우스 커서의 위치를 가져옵니다.
“Position 속성은 Control.MousePosition 속성과 동일합니다.”
답변
위치를 얻으려면 OnMouseMove 이벤트를보십시오. MouseEventArgs는 x 및 y 위치를 제공합니다.
protected override void OnMouseMove(MouseEventArgs mouseEv)
마우스 위치를 설정하려면 Cursor.Position 속성을 사용하십시오.
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;
}
}