我有一个具有多个 WindowsFormsHost 控件的 WPF 应用程序。当我的应用程序在全屏模式下最大化时,我试图跟踪它在我的应用程序中的位置。如果用户将鼠标放在顶部屏幕附近,我想显示一个带有附加菜单的窗口。
我可以用:
- Window.PreviewMouseMove
- InputManager.PreProcessInput,甚至
- HwndSource.FromHwnd(WindowInteropHelper(mainWindow).Handle).AddHook(...)
只要鼠标没有在 WindowsFormsHost 上移动,就接收移动事件(如果用户这样做,我不会收到事件)。我认为根本问题是因为 WPF 为每个 WindowsFormsHost 使用单独的 HWND。
有没有一种好方法可以跟踪我的应用程序中的鼠标移动,而无需手动查找每个 WindowsFormsHost 并订阅其鼠标移动事件?如果可能的话,我还想避免使用全局 Windows 鼠标侦听器。