답변:
System.Windows.Forms.Cursor.Position : "화면 좌표에서 커서의 위치를 나타내는 Point"를 사용해야 합니다.
PointToClient
.
양식을 참조하지 않으려면 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;
}
}
양식 영역에서 현재 위치를 가져와야하는 경우 (실험적으로) 시도해보십시오.
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()
);
비록 8 개 및 30 정수는 실험에 의해 발견되었다.
누군가가 왜 정확히이 숫자를 설명 할 수 있다면 멋질 것입니다 ^.
또한 다른 변형이 있습니다 (코드가 Form의 CodeBehind에 있음을 고려).
Point cp = this.PointToClient(Cursor.Position); // Getting a cursor's position according form's area
Console.WriteLine("Cursor position: X = " + cp.X + ", Y = " + cp.Y);
DLL을 가져 오려면 다음 가져 오기도 있어야합니다.
using System.Runtime.InteropServices;
using System.Diagnostics;