在Windows 7和Windows 10上阅读Python 2.7中的按键

时间:2018-01-25 12:43:42

标签: python windows python-2.7

我是学生,作为家庭作业的一部分,我的伙伴和我使用Pyhook构建了一个小python程序,读取每个被按下的字符,然后写入文件“字母#字母#被按下”。< / p>

当我们在Windows 7平台上运行该程序时,它运行得很好。 但是,当我们在Windows 10上运行该程序并稍后在运行Windows 8.1的大学计算机上对其进行测试时,我们得到了实际字母应该出现的空白区域。

解释这些Windows平台之间的字母ASCII有什么区别吗? (我们通过谷歌搜索这个问题知道Windows已经更改了其按Alt +数字而不是字母的字符映射)

如果没有,我们在这些Windows平台之间写文件的方式有什么不同吗?

以下是代码片段:

import pyHook, pythoncom

loc = 'c:\\Users\\Admin\\Desktop\\test.txt'

def onkeyboardpress(event):
    if 64 < event.Ascii < 91:
        out = open(loc,'a')
        out.write('The letter ' + chr(event.Ascii) + ' was pressed\n')
        out.close()
    return True

hooks_manager = pyHook.HookManager()
hooks_manager.KeyDown = onkeyboardpress
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()

非常感谢你,祝你有个美好的一天!

修改1:

当我打印录制事件的Ascii时,它为所有字符提供0。这就是为什么我的文件中没有任何内容。 我猜它是基于Unicode的,事实上,Ascii确实发生了变化。

我无法在网上找到它的原因所以任何关于如何使它适用于这两个平台的建议将非常感谢!

1 个答案:

答案 0 :(得分:0)

感谢您的回复。事实证明,在Windows 8.1和10中,Ascii值确实给出了0.但是,Key Code值为每个按下的键提供了不同的数字,在字母的情况下,它与Ascii相同。 我成功地使用它而且它已经成功了。