Kev*_*ier 5 c winapi keycode shift
我有一个小的 WIN32 C 应用程序,我在其中使用该KBDLLHOOKSTRUCT
结构。此结构包含用于按下键的 VK 代码。
我尝试将其转换为 ASCII 字符。为此,我使用了 Function MapVirtualKey
,它运行良好。
唯一的问题是,一个 VK 代码可以保留多个字符。例子:
在我的键盘(瑞士-德语)上存在 key-char .。如果我按Shift+.然后它会创建一个:
. VK 代码是相同的。那没问题,我还可以检查是否Shift被按下或被Caps Lock激活。
我唯一的问题是:我怎样才能得到字符 ':'?我需要这样的功能:
GetKeyChar(vkCode, shift)
我需要这个来获得键盘的“正常”和“移位”值。当然,我可以对此进行硬编码,但我不喜欢以这种方式进行。
问题在于,他们KBDLLHOOKSTRUCT
没有完成翻译所需的所有信息。每次按下某个键时您都会收到一条消息。因此,对于 Shift+X,您将收到一条输入消息,表明已按下 Shift 键,并收到另一条消息,表明已按下“X”键。
您需要调用GetKeyboardState才能获取 Shift、Alt、Ctrl(或许还有其他)键的状态。然后致电ToAsciiEx
或ToUnicodeEx
.
归档时间: |
|
查看次数: |
8016 次 |
最近记录: |