外部プロセスでWM_CHARのGetMessage()呼び出しをインターセプトする方法を探しています (具体的には、アクティブなウィンドウのみ)。私はSetWindowsHookEx()を使用するのをためらっています- キーボード入力を変更する可能性のある可能な限り幅広いプログラムが最初に起動する可能性があることを絶対に確認したい. 誰か提案はありますか?
環境:現在のキーボード レイアウトのビジュアルを生成するためのアプリケーションを構築しています。ただし、サードパーティのキーボード再マッピング ソフトウェア (ユーザーが作成した AutoHotkey スクリプトなどを含む) と可能な限り互換性を持たせることを目指しています。ホットキーを介してトリガーされると、私のプログラムはアクティブなウィンドウ (スキャンコード + 適切な仮想キー) にキー押下を送信します。これは、ウィンドウ プロシージャによって処理される必要があります。したがって、システム全体のフックに基づくリマップ ソフトウェアと、アクティブなアプリケーション内のキーのみを再マップするようにプログラムされています...そして、私のプログラムは結果の WM_CHAR / WM_UNICHAR / WM_DEADCHAR メッセージを傍受し、そこからキーボードレイアウトを再構築します. 実際には、文字メッセージが出力用のアクティブ ウィンドウに到達することはありません。
PS申し訳ありませんが、登録後に最初に質問を投稿するのはおそらくマナー違反ですが、私はこの問題を何晩も調査してきましたが、まだ最適な解決策を見つけていません! 私は主に AutoHotkey で作業しており、真の現在のキーボード レイアウトを取得するために検討した他の方法を喜んで共有しますが、それらにはすべて制限があります。