【发布时间】:2018-01-25 12:43:42
【问题描述】:
我是一名学生,作为家庭作业的一部分,我和我的搭档使用 Pyhook 构建了一个小型 Python 程序,该程序读取每个被按下的字符,然后写入文件“字母 #letter# 被按下”。
当我们在我的 Windows 7 平台上运行该程序时,它运行良好。 但是,当我们在他的 Windows 10 上运行该程序并随后在一台运行 Windows 8.1 的大学计算机上对其进行测试时,我们在实际字母应该去的地方出现了空白。
在这些 Windows 平台之间解释字母的 ASCII 有什么不同吗? (通过谷歌搜索这个问题我们知道,Windows 已经对其按 Alt + 数字但不是字母的字符映射进行了更改)
如果不是,我们在这些 Windows 平台之间写入文件的方式有什么不同吗?
这是一个sn-p的代码:
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 确实发生了变化。
我在网上找不到它的原因,所以任何关于如何使它适用于两个平台的建议将不胜感激!
【问题讨论】:
-
pyhook 调用其
ConvertToASCII函数,该函数调用ToAscii。附加调试器并在ToAscii上设置断点以检查传递给它的值及其返回值。
标签: python windows python-2.7