はじめまして。
特定のキーを無効にするためには、(たとえばHキーなど)どうすればいいのでしょうか?
特殊キー以外の全キー無効化(下のフックのソースで)はできたのですが、そうではなく特定のキーを無効化したいのです。以下のソース(dllソースのフック部分)に何を追加、変更すればよろしいのでしょうか?
BOOL CALLBACK SetHook(VOID)
{
if ((hHook = SetWindowsHookEx(
WH_KEYBOARD, (HOOKPROC)KeyboardProc, DllInstance, 0)) == NULL)
return FALSE;
return TRUE;
}
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
if(code == HC_NOREMOVE )
return (CallNextHookEx(hHook, code, wParam, lParam));
return TRUE;
}
開発環境:WindowsXP
そこまで書けたのなら、KeyboardProcのところで、code,wParam,lParam
をデバッグ出力させてみたら、キー入力のたびに、どんなコードを捕捉
しているか、解るんですが・・・
code >= 0 の条件で、wParam にキーマトリックスの情報が入ってくる
ので、特定のコードを無効にしたいならば、その場合にのみwParamの中
身をクリアして、CallNextHookEx(hHook, code, wParam, lParam)を呼
ぶか、return TRUE か、return FALSE で返すか・・・
その辺は、調べて適切な値でreturnさせれば欲しい機能が実現できるは
ずです。
以上。参考まで
返信送れて大変申し訳ないです・・・
なるほど。勉強になります。
いまいちreturn TRUEなどでどうしてキー無効化されるか
わからなかったのですが、単に自分の調べ不足でしたね。
おもいしらされました^^;
返信ありがとうございました
ツイート | ![]() |