- 締切済み
キーボードフックの使い道
dll のソースの一部です。 LRESULT CALLBACK MyHookProc(int nCode, WPARAM wParam, LPARAM lParam) { if ( wParam == 0x31 )処理; return CallNextHookEx(hHook, nCode, wParam, lParam); } 処理の部分では、MessageBox( ) とか MessageBeep( ) ぐらいしか 使えません。 「ぬ」 のキーが押されたら、メインのウインドウのエディットボックスの 文字を書き替えたりしたいんだけど、キーボードフックのプロージャの 中では、文字列の書き替えをすると、アプリケーションが強制終了します。 メモリマップドファイル、グローバルメモリの書き替えもやってみたけど キーボードフックのプロージャの中からはできませんでした。 dll の中なのに、キーボードフックのプロージャの中では 自分自身を LoadLibrary( ) して、GetProcAddress( ) とかしないと メモリの書き換えとかができないんですか? キーボードフックのプロージャの良い活用法を教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- fatal_error
- ベストアンサー率39% (23/58)
回答No.1
なんか、質問の最後の辺りがよくわからないままの回答ですが…。 別にメモリを共有して書き換えたりしないでも、 その「ぬ」のキーコードを検知したら、 別のキーコードをPostMessageとかしときゃいいんじゃないですか? 純粋に「書き換えたい」というか「差し替えたい」みたいな用途の場合、ダメですけど。 あと、細かいですけど、「procedure」だから「プロージャ」ではなく「プロシージャ」です。
お礼
プロシージャ知りませんでした。 ありがとうございます。 フックプロシージャ内では PostMessage( ) も 使えませんでした。 キーボードフックというものが用意されている限り、 メッセージボックスを出すだけとか、音を出すだけしか できないなんてことはないと思います。 キーコードを検知して、その後何かのイベントを しているようなソースのサンプルはどこかにないですか?