C#获取Windows下光标位置

使用C#获取光标相对于显示器屏幕的位置,以下方式在Windows 8的WPF程序中测试通过

方式一:

using System;
using System.Drawing;
using System.Runtime.InteropServices;

namespace ColorPicker
{
    /// <summary>
    /// win8下wpf程序测试成功
    /// </summary>
    public class CursorPointManager
    {
        #region 得到光标在屏幕上的位置
        [DllImport("user32")]
        private static extern bool GetCursorPos(out Point lpPoint);

        /// <summary>
        /// 获取光标相对于显示器的位置
        /// </summary>
        /// <returns></returns>
        public static Point GetCursorPosition()
        {
            Point showPoint = new Point();
            GetCursorPos(out showPoint);
            return showPoint;
        }
        #endregion

    }
}

 

方式二:

使用System.Windows.Forms的Cursor类。

在WPF程序中引入System.Windows.Forms命名空间,如下调用

System.Drawing.Point point = System.Windows.Forms.Cursor.Position;



 

C#中,Windows API并不直接提供获取控件焦点位置的方法,因为这通常需要自定义处理或者对特定控件的底层操作。如果你想要获取窗口或控件的焦点位置而非鼠标光标位置,你可以通过以下几个步骤: 1. **遍历窗口的孩子控件**:首先,你需要获取窗口的焦点控件(如TextBox、Edit等)。你可以使用`FindWindowEx`函数查找具有焦点的控件。 ```csharp [DllImport("user32.dll")] private static extern IntPtr FindWindowEx(IntPtr hWndParent, IntPtr hWndChildAfter, string className, string windowName); ``` 2. **获取焦点控件**:找到焦点控件后,再调用`GetWindowRect`获取其边界信息,这样就能得到焦点所在的大致位置了。 ```csharp [DllImport("user32.dll", SetLastError = true)] private static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect); ``` 3. **计算焦点中心位置**:从边界信息中计算出控件中心点,通常是宽高的一半加左上角坐标。 ```csharp struct RECT { public int left; public int top; public int right; public int bottom; }; // 示例 RECT rect; if (GetWindowRect(focusedControlHandle, out rect)) { int centerX = rect.right / 2; int centerY = rect.bottom / 2; } ``` 4. **在焦点位置输出文本**:现在你有了焦点位置,你可以选择在这个坐标上绘制文本,例如使用`SetConsoleCursorPosition`(如果是控制台应用程序)或创建一个Graphics对象(对于GUI应用程序),然后使用`DrawString`方法。 注意,这个过程可能会受限于控件的滚动、大小调整等因素。如果你的目标是在特定的用户界面元素内部精确地定位文字,可能需要更深入地了解控件的布局逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值