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

解決


ひるどん  2007-10-05 17:45:09  No: 66532

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

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

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

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

以上。参考まで


ひるどん  2007-10-16 22:58:47  No: 66534

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加