0

なぜ私がこの質問をしているのか、おそらくお分かりいただけると思います。そうでない場合でも、それは非常に簡単です。私の質問は、この API への呼び出しについて他の実行中のアプリケーションをスキャンせずに、自分のアプリケーションで SetCursorPos() の使用を検出できるかどうかです。

たとえば、ウィンドウ内にカーソルがあり、SetCursorPos() を呼び出した場合、このウィンドウはカーソルの配置がマウス (生の入力) から直接ではないことを認識できますか?

位置がどのように変化するかを確認するだけで、マウス入力が生であるかどうかを「知る」ことができるという事実に気づいていません。たとえば、位置が 100(X) & 100(Y) から 500(X) および 500(Y) に変化した場合、これら 2 つの間の個々の位置を移動せずに、何かがマウスの位置を変更したことは確実です。

あなたの誰かが「生のマウス入力」を生成する方法を知っている場合、関数からの出力とマウスからの出力の違いをアプリケーションが区別できない場合-そのような違いがある場合-- dでも十分です。

もちろん、マウスを動かすたびに、使用しているオペレーティング システムがこれを検出し、それに応じてカーソルを適切に移動します。実際には、この低レベルの機能を自分の意志で変更できるはずですか?

4

1 に答える 1

1

ウィンドウがマウスの移動方法を直接判断する方法はありません。外部アプリケーションは を使用している可能性がありますが、代わりにまたは などSetCursorPos()の低レベル関数を使用している可能性もあります。通知がターゲット ウィンドウに到達するまでに、OS は既にデータを正規化しており、ソース情報はすべて失われています。または他の関数の使用を本当に検出する必要がある場合は、実行中のすべてのプロセスでそれらの関数に直接フックする必要があります。または、「Raw Input」に登録して、マウス ハードウェア ダイレクトから対応する通知を取得するかどうかを確認することもできます。これらのシミュレート機能は Raw 通知もトリガーしないと仮定します。mouse_event()SendInput()SetCursorPos()RegisterRawInputDevices()

于 2012-12-10T18:41:18.077 に答える