2017-04-08 9 views
-1

ゲーム中のマウスの動きを記録して再生できるようにしようとしています。ゲームはCall of Duty 4ですが、この質問には関係ありません。関連性のあることは、ほとんどのファーストパーソンシューティングゲームが、マウスカーソルを動かすときにマウスカーソルを再センタリングするため、決してボーダーを打つことができないということです。しばらく検索した後、私はこのオンラインについて何も見つけることができません。私は現在、マウスの動き(WM_MOUSEMOVE)を追跡するためにマウスフック(WH_MOUSE)を使用しています。これらのメッセージをリストすると、カーソルがscreenResolutionX/2、screenResolutionY/2(画面の中央)に戻されていることがわかります。ゲームを再センタリングする前にカーソル位置を取得する

私が最初に試したのは、画面の中央に等しい場合にメッセージを無視することでした。そのため、マウスの動きを再生すると、再センタリングは無視されます。私はこれが問題を解決すると仮定しましたが、私がマウスの動きを再生すると、マウスはあまりにも遠くに(私が記録したものから離れて)行きます。ゲームのメインメニュー(カーソルが再センタリングされていない場所)で同じ録音/再生を行うと、再生は信じられないほど正確です。私の質問は、ゲームでマウスの動きを正確に記録するにはどうしたらいいですか?

ありがとうございます。

編集:私が求めていることを明確にしましょう。私は実際のユーザーのマウス入力を記録するだけで、マウスカーソルを再センタリングするゲームではありません。

+0

ゲームのウィンドウに送信される前に**マウスメッセージを傍受する必要があるように聞こえます**。 TBH – YePhIcK

+0

私はそれを見てきましたが、私がしようとしていることを達成するためにドライバ/フィルタが必要であるということに同意しません。それは、Windowsに達する前にマウスデータを傍受したいのであれば、ゲームに入る前にマウスのデータを傍受したいのですが、再センタリングは必要ありません。多分、マウスメッセージの出所を特定する方法があります。ゲームプロセスによって送信された場合、無視しますか?私はこのようなものを見つけることができませんでした.. –

+0

"Windows"は過負荷の用語です。上記のコンテキストでは、「ウィンドウ」は「WindowsのOS」ではなく「ゲームのウィンドウ」を意味します。 – YePhIcK

答えて

-1

これらのマウスメッセージを傍受するには、フィルタドライバまたはフックを作成する必要があります。

http://www.oblita.com/interception.html

その記事がこのWindows API: SetWindowsHookExに基づいており、あなたのために良い出発点でSHOLD:ここでは、件名に(コード付き)素晴らしい記事です。

+0

私は元の投稿で述べたように、私はWindowsフックを使用しています。しかし、ゲームはまた、WM_MOUSEMOVEメッセージの再センタリングを送信します。私はそれらも受け取ります。つまり、実際のマウスの動きを特定できません(WM_MOUSEMOVEにマウスの小さな動きと再センタリングが含まれることがあるため、フィルタリングできません)。私はフィルタドライバが私が欲しいものを達成するために必要ではないと思います。インターセプトは問題ではない - 実際のマウス入力から再センタリングを区別できるようにしたい。 –

+0

画面のジオメトリと現在のマウスの位置(少なくとも以前に傍受されたマウス移動メッセージに基づく)が分かっているので、マウス移動メッセージがその移動を中心にしているかどうかを常に知ることができます。それは本当ですか? – YePhIcK

+0

しかし、どのようにして、マウスを動かすか、ゲームを再センタリングするのか、中心に近づけるのかを区別することはできますか? –

0

Low Level Mouse Hookとお考えですか?それはマウスのフックよりも早くマウスのメッセージを傍受します。

関連する問題