1

MouseMove イベントを使用してマウスの位置を追跡しようとしました。

protected override void OnMouseMove(MouseEventArgs e)

これは、マウスが指定された UIElement (この場合はアプリケーションのウィンドウ) の上にあるときに機能しますが、マウスがどこにあるかに関係なく、できればアプリケーションにフォーカスがあるかどうかに関係なく、このデータにアクセスしたいと考えています。

Mouse.Capture が解決策だと思い、それを使用してウィンドウにキャプチャしましたが、マウスがウィンドウ上にあるときにのみ MouseMove が発生します。

マウスの位置に関係なく、MouseMove イベント (または類似のもの) を取得する方法を知っている人はいますか?

4

2 に答える 2

2

PreviewMouseMoveアプリケーションの範囲内でこれを実行する場合は、イベントを使用する必要があります。Window子要素にルーティングされる前に、常にこれを最初に取得します。MouseMoveレベルで処理する場合Window、子要素がイベントを処理済みとしてマークする可能性があるため、イベントを取得できない可能性があります。

を使用する代わりに、クラスハンドラーPreviewMouseMoveをサブクラス化Windowしてアタッチし、MouseMove他の誰かがイベントを処理済みとしてマークしたかどうかに関係なく、常に通知を希望するように指定することもできます。詳細については、こちらをご覧ください

于 2009-01-15T16:06:55.173 に答える
2

Win32 GetCursorPos 関数を P/Invoke することができます。それが最も信頼できる方法だと思います: GetCursorPos on MSDN

必要な DllImport 宣言は、 http ://www.pinvoke.net/default.aspx/user32/GetCursorPos.html にあります。

于 2009-01-15T15:52:15.047 に答える