鼠标移动未在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之类的其他值