キーボードフック


ハルカ  2004-04-13 07:14:07  No: 53472

こんばんは、ハルカと申します。

タイトル通りキーボードのフックに関して質問
させてください。

例えば、Vキーを押したら数字の999或いは、文字列の
999のようなすり替えが可能でしょうか?

フックプロシージャの中で、
wParamに対してVK_V→VK_Pのような事は
簡単にできるかとは思うのですが、
ひとつのキーに対して999ですから
キー3つ分を割り当てることなんて可能なのでしょうか?

どうぞ宜しくお願いします。


たく  2004-04-13 19:22:38  No: 53473

数字の999或いは、文字列の999という意味がわかりませんが、
VK_V→VK_Pができているのであれば、
同様にすればできますよね?
あとは、同じことを3回処理すればいいだけですし、
処理中に無限ループに陥らないように気をつければいいだけかと・・・


ハルカ  2004-04-14 03:43:03  No: 53474

たく様

>VK_V→VK_Pができているのであれば、

これが思っていたようにできませんでした。

wParam=VK_Pのようにすればできるのかと、
でも、実際には私の思い違いでした。

そうですね、単純に考えれば3回ループ
されればよいですね。

質問がもっと初歩的になってしまいましたが、
VK_V→VK_Pのようにするにはどうすればよいでしょうか?

よろしくお願いします。


たく  2004-04-14 20:26:03  No: 53475

めんどうなのでコードで示します。
適当に変更して試してください。

BOOL CEditTest::PreTranslateMessage(MSG* pMsg) 
{
  // キーボード入力の、すべての'V'を'P'に変換
  // Ctrl+Vでペーストできなくなります
  if(pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
  {
    switch(pMsg->wParam)
    {
    case 'V':
      pMsg->wParam = 'P';
      break;
    }
  }

  // WM_CHARの'P'の処理
  if(pMsg->message == WM_CHAR)
  {
    if(pMsg->wParam == 'P' || pMsg->wParam == 'p')  
    {
      // 999の処理をする
      TRACE("Push \'P\'\n");
      return TRUE;
    }
  }
  return CEdit::PreTranslateMessage(pMsg);
}


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

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






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