1
CTRL、ALT、またはcapslockキーの仮想キーコードを取ることができる関数がwin32にありますか?& "CTRL"、 "ALT"、 "CAPSLOCK"という文字列を返しますか?WM_KEYDOWNメッセージからの非文字プレスの検出
私はWM_KEYDOWNメッセージを受信できますが、WM_CHARメッセージは受信できません。 ToUnicode()&に仮想キーコードを渡すことによって、どの文字キーが押されたのかを知ることができます。文字キーが押されたことを教えてくれます。
ただし、CTRL仮想キーコードを渡すと、この関数は何も返しません。
char keyPressed[256];
KBDLLHOOKSTRUCT kbdStruct = *((KBDLLHOOKSTRUCT*)lParam);
GetKeyboardState((PBYTE)&keyState);
ToUnicode(kbdStruct.vkCode, kbdStruct.scanCode, (PBYTE)&keyState, (LPWSTR)&keyPressed, sizeof(keyPressed)/2, 0);
// so if the key pressed was 'a' then keyPressed = "a";
// & if the key pressed was CTRL then keyPressed = "CTRL";
"関数が異なる入力ロケールに対して異なる結果を与えることがあります"。たとえば、ドイツ語でCtrlという名前のCtrlを期待しないでください。 – MSalters