特定のキーを無効にするには?

解決


ひるどん  2007-10-05 08:45:09  No: 66532  IP: 192.*.*.*

はじめまして。
特定のキーを無効にするためには、(たとえば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

編集 削除
オショウ  2007-10-06 22:26:07  No: 66533  IP: 192.*.*.*

そこまで書けたのなら、KeyboardProcのところで、code,wParam,lParam
をデバッグ出力させてみたら、キー入力のたびに、どんなコードを捕捉
しているか、解るんですが・・・

code >= 0 の条件で、wParam にキーマトリックスの情報が入ってくる
ので、特定のコードを無効にしたいならば、その場合にのみwParamの中
身をクリアして、CallNextHookEx(hHook, code, wParam, lParam)を呼
ぶか、return TRUE か、return FALSE で返すか・・・

その辺は、調べて適切な値でreturnさせれば欲しい機能が実現できるは
ずです。

以上。参考まで

編集 削除
ひるどん  2007-10-16 13:58:47  No: 66534  IP: 192.*.*.*

返信送れて大変申し訳ないです・・・

なるほど。勉強になります。
いまいちreturn TRUEなどでどうしてキー無効化されるか
わからなかったのですが、単に自分の調べ不足でしたね。
おもいしらされました^^;

返信ありがとうございました

編集 削除