複数の WindowsFormsHost コントロールを持つ WPF アプリケーションがあります。アプリケーションがフルスクリーン モードで最大化されているときに、アプリケーション内のマウスの位置を追跡しようとしています。ユーザーがマウスをトップ画面の近くに置いた場合、追加のメニューを含むウィンドウを表示したいと思います。
使うことができます:
- Window.PreviewMouseMove
- InputManager.PreProcessInput、または
- HwndSource.FromHwnd(WindowInteropHelper(mainWindow).Handle).AddHook(...)
マウスが WindowsFormsHost の上を移動しない限り、移動イベントを受信します (ユーザーがこれを行った場合、イベントは受信されません)。根本的な問題は、WPF が WindowsFormsHost ごとに個別の HWND を使用しているためだと思います。
各 WindowsFormsHost を手動で見つけてそのマウス移動イベントをサブスクライブすることなく、アプリケーション全体でマウスの動きを追跡する良い方法はありますか? 可能であれば、グローバルな Windows マウス リスナーも避けたいと思います。