[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.PositionPoint 를 사용 하고 지정해야합니다 .

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;
  }

}