首页 文章

在c#中获取鼠标位置

提问于
浏览
96

如何获得鼠标位置?我希望它在屏幕位置方面 .

我启动我的程序我想设置为当前鼠标位置 .

Location.X = ??
Location.Y = ??

Edit: 这必须在创建表单之前发生 .

8 回答

  • 72

    你应该使用System.Windows.Forms.Cursor.Position:"A Point that represents the cursor's position in screen coordinates."

  • 7

    如果您不想引用表单,可以使用interop来获取光标位置:

    /// <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;
    }
    
  • 161

    Cursor.Position将获得鼠标的当前屏幕位置(如果您在Control中,MousePosition属性也将获得相同的值) .

    要设置鼠标位置,您必须使用 Cursor.Position 并为其指定一个新的Point

    Cursor.Position = new Point(x, y);
    

    在创建表单之前,您可以在 Main 方法中执行此操作 .

  • 13

    要回答您的具体示例:

    // 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> ok)

  • 4
    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."

  • 17

    要获得该位置,请查看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

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

    }

  • 10

    初始化当前光标 . 用它来获得X和Y的位置

    this.Cursor = new Cursor(Cursor.Current.Handle);
    int posX = Cursor.Position.X;
    int posY = Cursor.Position.Y;
    

相关问题