こんばんは、ハルカと申します。
タイトル通りキーボードのフックに関して質問
させてください。
例えば、Vキーを押したら数字の999或いは、文字列の
999のようなすり替えが可能でしょうか?
フックプロシージャの中で、
wParamに対してVK_V→VK_Pのような事は
簡単にできるかとは思うのですが、
ひとつのキーに対して999ですから
キー3つ分を割り当てることなんて可能なのでしょうか?
どうぞ宜しくお願いします。
数字の999或いは、文字列の999という意味がわかりませんが、
VK_V→VK_Pができているのであれば、
同様にすればできますよね?
あとは、同じことを3回処理すればいいだけですし、
処理中に無限ループに陥らないように気をつければいいだけかと・・・
たく様
>VK_V→VK_Pができているのであれば、
これが思っていたようにできませんでした。
wParam=VK_Pのようにすればできるのかと、
でも、実際には私の思い違いでした。
そうですね、単純に考えれば3回ループ
されればよいですね。
質問がもっと初歩的になってしまいましたが、
VK_V→VK_Pのようにするにはどうすればよいでしょうか?
よろしくお願いします。
めんどうなのでコードで示します。
適当に変更して試してください。
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);
}
ツイート | ![]() |