【问题标题】:Don't get the ASCII codes for some keys不要获取某些键的 ASCII 码
【发布时间】:2015-07-20 11:24:31
【问题描述】:

我一直在做一个项目,这个项目做的一件事就是使用键盘上按下的键。它读取每个键的 ASCII 码,但有些键不会发出任何信号,例如: ' 。 ', ' / ', ' ; '等等……

char i;

while(1){
    for(i = 0; i <= 190; i++){
        if(GetAsyncKeyState(i) == -32767)
            key_pressed(i, "KEYS.TXT");
    }
}

这就是我监控按键的方式。

【问题讨论】:

  • 键盘记录器已经过去十年了。
  • 您可能不想使用==。使用GetAsyncKeyState(i) &amp; 0x8001。吹毛求疵 - 使用十六进制可以更清楚地表明您正在检查位标志。

标签: c++ winapi ascii


【解决方案1】:

GetAsyncKeyState() 使用 virtual key codes,而不是 ASCII 值。 其中一些代码与 ASCII 值一致(例如,A 在两者中都是 0x41),但不是全部。

在这种情况下,如果您想知道是否按下了;(或:)键,您可以使用VK_OEM_1(或0xBA)

您也许可以使用VkKeyScan() 将 ASCII 代码转换为虚拟键代码。 (我没有测试过,所以不能告诉你它是否真的有效)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-20
    • 2011-11-02
    • 1970-01-01
    • 2017-05-09
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多