鼠标移动未在WPF主窗口外触发

鼠标移动未在WPF主窗口外触发,wpf,mouse,capture,Wpf,Mouse,Capture,我想得到鼠标相对于屏幕坐标的位置。我使用下面的代码来实现这一点 window.PointToScreen(Mouse.GetPosition(window)); 它正在按预期工作。但是我的鼠标移动事件没有在主窗口外启动。这是如果我在桌面上移动鼠标,恢复窗口 欢迎任何想法。使用CaptureMouse()方法 对于上面的示例,您可以添加: window.CaptureMouse(); 在MouseDown事件处理程序中的代码隐藏中 然后您需要拨打: window.ReleaseMouseCap

我想得到鼠标相对于屏幕坐标的位置。我使用下面的代码来实现这一点

window.PointToScreen(Mouse.GetPosition(window));
它正在按预期工作。但是我的鼠标移动事件没有在主窗口外启动。这是如果我在桌面上移动鼠标,恢复窗口

欢迎任何想法。

使用CaptureMouse()方法

对于上面的示例,您可以添加:

window.CaptureMouse();
在MouseDown事件处理程序中的代码隐藏中

然后您需要拨打:

window.ReleaseMouseCapture();

在MouseUp事件处理程序内部的代码中。

我需要能够捕获WPF窗口外部的鼠标位置,而不管是否按下任何鼠标按钮。最后,我使用Interop调用WINAPI GetCursorPos,并将其与线程相结合,而不是窗口的事件

using System.Runtime.InteropServices;
using Point = System.Drawing.Point;

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetCursorPos(ref Point lpPoint);

 public MainWindow()
    {
        InitializeComponent();

        new Thread(() =>
        {
            while (true)
            {
                //Logic
                Point p = new Point();
                GetCursorPos(ref p);

                //Update UI
                Dispatcher.BeginInvoke(new Action(() =>
                {
                    Position.Text = p.X + ", " + p.Y;
                }));

                Thread.Sleep(100);
            }
        }).Start();
    }
}
很好

对不起,我睡着了(0)这是一个明显的错误,根据您的更新,将其更改为100之类的其他值