• 締切済み

キーボードフックの使い道

dll のソースの一部です。 LRESULT CALLBACK MyHookProc(int nCode, WPARAM wParam, LPARAM lParam) {  if ( wParam == 0x31 )処理;  return CallNextHookEx(hHook, nCode, wParam, lParam); } 処理の部分では、MessageBox( ) とか MessageBeep( ) ぐらいしか 使えません。 「ぬ」 のキーが押されたら、メインのウインドウのエディットボックスの 文字を書き替えたりしたいんだけど、キーボードフックのプロージャの 中では、文字列の書き替えをすると、アプリケーションが強制終了します。 メモリマップドファイル、グローバルメモリの書き替えもやってみたけど キーボードフックのプロージャの中からはできませんでした。 dll の中なのに、キーボードフックのプロージャの中では 自分自身を LoadLibrary( ) して、GetProcAddress( ) とかしないと メモリの書き換えとかができないんですか? キーボードフックのプロージャの良い活用法を教えてください。

みんなの回答

回答No.1

なんか、質問の最後の辺りがよくわからないままの回答ですが…。 別にメモリを共有して書き換えたりしないでも、 その「ぬ」のキーコードを検知したら、 別のキーコードをPostMessageとかしときゃいいんじゃないですか? 純粋に「書き換えたい」というか「差し替えたい」みたいな用途の場合、ダメですけど。 あと、細かいですけど、「procedure」だから「プロージャ」ではなく「プロシージャ」です。

A__
質問者

お礼

プロシージャ知りませんでした。 ありがとうございます。 フックプロシージャ内では PostMessage( ) も 使えませんでした。 キーボードフックというものが用意されている限り、 メッセージボックスを出すだけとか、音を出すだけしか できないなんてことはないと思います。 キーコードを検知して、その後何かのイベントを しているようなソースのサンプルはどこかにないですか?

関連するQ&A

専門家に質問してみよう