我尝试使用MouseMove事件来跟踪鼠标的位置。
protected override void OnMouseMove(MouseEventArgs e)
当鼠标在给定的UIElement(在这种情况下,我的应用程序的窗口)上时,这是有效的,但无论鼠标在哪里,我都想访问这些数据,最好是不管我的应用程序是否有焦点
我认为Mouse.Capture是解决方案,我用它来捕获到我的窗口,但鼠标移动窗口时鼠标移动仍然只会被提升。
有没有人知道如何让MouseMove事件(或类似事件)独立于鼠标位置?
答案 0 :(得分:2)
你可以P / Invoke Win32 GetCursorPos函数。我认为这将是最可靠的方式: GetCursorPos on MSDN。
可在此处找到所需的DllImport声明: http://www.pinvoke.net/default.aspx/user32/GetCursorPos.html
答案 1 :(得分:2)
如果要在应用程序的范围内执行此操作,则应使用PreviewMouseMove
事件。在Window
路由到子元素之前,MouseMove
将始终首先获得此信息。如果您在Window
级别处理PreviewMouseMove
,则子元素可能会将事件标记为已处理,因此您可能永远无法获得该事件。
使用Window
的替代方法是继承MouseMove
并将类处理程序附加到{{1}}并指定您始终要通知,无论其他人是否将事件标记为已处理。更多信息here。