【发布时间】:2011-07-10 23:02:34
【问题描述】:
win32 中是否有一个函数可以获取 CTRL、ALT 或大写锁定键的虚拟键代码并返回一个字符串“CTRL”、“ALT”、“CAPSLOCK”?
我只能接收 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";
【问题讨论】: