私はサードパーティのアプリケーション(簡潔にするためにGreedyAppと呼びます)を持っています。これは、ウィンドウがフォーカスされたときにマウスとキーボードの入力を人質にします。つまり、標準のマウスカーソルを非表示にして、独自のカーソルに置き換え、カーソルをに制限します。そのウィンドウ。他のウィンドウへの入力を取得する唯一の方法は、GreedyAppから離れてALT+TABすることです。
システムのすべてのコンポーネントをユーザーが自由に使用できるようにする必要があります(提供されるシステムは純粋にタッチスクリーンになります)。そのため、GreedyAppがフォーカスを取得すると、システムの残りの部分はすぐに使用できなくなります。
これまでのところ、GreedyAppのuser32.dllをハイジャックし、フックSetCursor
しShowCursor
てClipCursor
、を無効にしました。その結果、GreedyAppはカーソルを非表示にしなくなり、ユーザーがカーソルを移動した場所ならどこでもカーソルを自由に移動できますが...
私が残している問題は、画面上のどこでカーソルが押されても、キーボードのどのキーが押されても(ALT + TABを除く)、入力は引き続きGreedyAppに送られ、他のウィンドウは押されないことです。入力を受け取ります。
GreedyAppがこれをどのように達成しているかわからないため、どのAPI呼び出しをフックして停止するかはまだわかりません。フック自体を使用していた可能性がありますが、フックして無効SetWindowsHookEx
にしましたが、問題は解決しません。
だから私の質問はこれです:
また:
A)アプリケーションが実行時に行っているAPI呼び出しを見つけるための(比較的簡単な)方法はありますか?
また
B)他のウィンドウが入力を受け取らないようにするためにGreedyAppが使用する可能性のある方法は何ですか?