首页 文章

来自VK_Code的ASCII字符

提问于
浏览
3

我有一个小的WIN32 C-Application,我使用KBDLLHOOKSTRUCT结构 . 此结构包含按下的键的VK代码 .

我尝试将其转换为ASCII字符 . 为此,我使用功能MapVirtualKey,它运作良好 .

唯一的问题是,一个VK代码可以保留多个字符 . 例:

在我的键盘上(瑞士 - 德国)存在关键字符..如果我按Shift键 . 然后它创建一个 : . VK-Code是一样的 . 这没问题,我也可以检查是否按下Shift或激活大写锁定 .

我唯一的问题是:我如何获得char':'?我需要一个这样的函数:

GetKeyChar(vkCode, shift)

我需要这个来获得键盘的“正常”和“移位”值 . 当然我可以硬编码,但我不喜欢这样做 .

4 回答

  • 0

    问题是 KBDLLHOOKSTRUCT 不会收到输入消息,说明按下了Shift键,另一条消息说按了"X"键 .

    您需要调用GetKeyboardState才能获得Shift,Alt,Ctrl(和其他)键的状态 . 然后调用 ToAsciiExToUnicodeEx .

  • 2

    您正在寻找的功能是:ToAscii,ToAsciiEx,ToUnicode,ToUnicodeEx .

  • 2

    short VkKeyScan(char ch) API包含班次信息 . 它将char转换为虚拟键代码和转换状态 .

    见:Convert character to the corresponding virtual-key code

  • 3

    您正在寻找ToUnicode,它返回该按键生成的unicode字符 .

相关问题