C++ 如何从虚拟密钥代码中获取密钥文本?

C++ 如何从虚拟密钥代码中获取密钥文本?,c++,winapi,C++,Winapi,如何从虚拟密钥代码中获取密钥文本 KBDLLHOOKSTRUCT * kbhook = (KBDLLHOOKSTRUCT *) lParam; cout << kbhook->vkCode <<endl; KBDLLHOOKSTRUCT*kbhook=(KBDLLHOOKSTRUCT*)LPRAM; cout-vkCodecout-vkCode)阅读时,我会尝试这样做: wchar_t buff[10]; BYTE keyState[256] = {0};

如何从虚拟密钥代码中获取密钥文本

 KBDLLHOOKSTRUCT * kbhook = (KBDLLHOOKSTRUCT *) lParam;
  cout << kbhook->vkCode <<endl;
KBDLLHOOKSTRUCT*kbhook=(KBDLLHOOKSTRUCT*)LPRAM;
cout-vkCode
cout-vkCode)阅读时,我会尝试这样做:

wchar_t buff[10];

BYTE keyState[256] = {0};

int result = ToUnicodeEx(
    kbhook->vkCode,
    kbhook->scanCode,
    keyState,
    buff,
    _countof(buff),
    0,
    NULL);

成功后,
buff
应包含Unicode字符。

答案的可能副本就在您自己发布的链接中。。。只需使用
ToUnicodeEx
和谷歌作为示例就可以开始了。我得到@grassPro:不要编写
wchar\u t[]
cout
。你需要
wchar\u t[]
wcout
。啊..那是个错误!但该程序无法区分大写字母和小写字母,无法分辨特殊字符,无法分辨是否按下了shift键等。。怎么做???@grassPro:您可能需要使用
keyState
数组(并使用
LoadKeyboardLayout
功能)。也许可以在该数组中设置shift键按下状态等。您将
buff
=10的大小保持为10的原因是什么?
{0}
表示什么?
wchar_t buff[10];

BYTE keyState[256] = {0};

int result = ToUnicodeEx(
    kbhook->vkCode,
    kbhook->scanCode,
    keyState,
    buff,
    _countof(buff),
    0,
    NULL);