0

私はサードパーティのアプリケーション(簡潔にするためにGreedyAppと呼びます)を持っています。これは、ウィンドウがフォーカスされたときにマウスとキーボードの入力を人質にします。つまり、標準のマウスカーソルを非表示にして、独自のカーソルに置き換え、カーソルをに制限します。そのウィンドウ。他のウィンドウへの入力を取得する唯一の方法は、GreedyAppから離れてALT+TABすることです。

システムのすべてのコンポーネントをユーザーが自由に使用できるようにする必要があります(提供されるシステムは純粋にタッチスクリーンになります)。そのため、GreedyAppがフォーカスを取得すると、システムの残りの部分はすぐに使用できなくなります。

これまでのところ、GreedyAppのuser32.dllをハイジャックし、フックSetCursorShowCursorClipCursor、を無効にしました。その結果、GreedyAppはカーソルを非表示にしなくなり、ユーザーがカーソルを移動した場所ならどこでもカーソルを自由に移動できますが...

私が残している問題は、画面上のどこでカーソルが押されても、キーボードのどのキーが押されても(ALT + TABを除く)、入力は引き続きGreedyAppに送られ、他のウィンドウは押されないことです。入力を受け取ります。

GreedyAppがこれをどのように達成しているかわからないため、どのAPI呼び出しをフックして停止するかはまだわかりません。フック自体を使用していた可能性がありますが、フックして無効SetWindowsHookExにしましたが、問題は解決しません。

だから私の質問はこれです:

また:

A)アプリケーションが実行時に行っているAPI呼び出しを見つけるための(比較的簡単な)方法はありますか?

また

B)他のウィンドウが入力を受け取らないようにするためにGreedyAppが使用する可能性のある方法は何ですか?

4

1 に答える 1

0

アプリケーションは、RegisterRawInputDevicesを使用して生のマウスとキーボードの入力を取得し、フラグを使用してRIDEV_CAPTUREMOUSE他のアプリケーションがフォーカスを取得するのを停止していました。

パラメータをWindowsAPIに渡して処理する前に、API呼び出しをフックし、フラグを削除しました。これで、ユーザーはシステムを制御できます:)

于 2013-01-02T09:29:07.137 に答える