ウィンドウ (D3D) がアクティブな間 (Ctrl-Alt-Del を除く)、すべてのグローバル ホット キーを無効にする (キャプチャ/インターセプト/ブロックする) アプリケーション (ゲーム) をリバース エンジニアリング (OllyDbg) しようとしています。
私の質問は、ウィンドウがアクティブなときに、そのようなアプリケーションがグローバル ホット キー (winkey、CTRL + Esc、および他のアプリケーションで設定されたグローバル ホットキーを含む) をどのようにキャプチャ/無効にすることができるかということです。
DirectInput を使用しているようです (問題がある場合)。低レベルのフック ( ) が設定されていないことがわかりますSetWindowsHookEx
。他のどのような方法でそのようなことを行うことができますか?
観察事項:
- アプリケーションが一時停止されている場合 (ウィンドウがまだフォーカスされている間)、ウィンドウがフォーカスされている間、ホット キーは引き続き無効になります。ウィンドウを別のものに切り替えると、それらが有効になります。中断されたアプリケーション ウィンドウに戻ると、ホット キーが再び無効になります。
- ウィンドウがフォーカスを失った後にアプリケーションをサスペンドし、サスペンドされたウィンドウに戻ると、ホット キーは完全に機能します。
- 編集:アプリケーションは、で設定されたグローバル ホットキーをブロックするように見えます
RegisterHotKey
が、フック ( ) を使用して作成されたホットキーは無効にしませんSetWindowsHookEx
。
上記の実験は、アプリが中断されていても機能するウィンドウに関連する設定であることを示しているようです。ある種の DirectInput 設定でしょうか? (私が目にする唯一の DINPUT API 関数呼び出しもDINPUT8.DirectInput8Create
.)
ゲームウィンドウがフォーカスされている間、他のアプリケーションからのホットキーが通常どおり機能するように、この動作を変更することを期待してこれを行っています。アイデアやヒントをいただければ幸いです。