加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VK_Code中的ASCII字符

发布时间:2020-12-16 09:36:58 所属栏目:百科 来源:网络整理
导读:我有一个小型WIN32 C-Application,其中我使用 KBDLLHOOKSTRUCT 结构.此结构包含按下的键的VK代码. 我尝试将其转换为ASCII字符.为此,我使用功能 MapVirtualKey ,它运作良好. 唯一的问题是,一个VK代码可以保留多个字符. 例: 在我的键盘上(瑞士 – 德国)存在关
我有一个小型WIN32 C-Application,其中我使用 KBDLLHOOKSTRUCT结构.此结构包含按下的键的VK代码.

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

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

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

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

GetKeyChar(vkCode,shift)

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

解决方法

问题是KBDLLHOOKSTRUCT没有为了进行翻译而需要的所有信息.每按一次键,您都会收到一条消息.因此对于Shift X,您将收到一条输入消息,说明已按下Shift键,另一条消息表示已按下“X”键.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读