【问题标题】:reading pressed keys in Python 2.7 on windows 7 vs windows 10在 Windows 7 和 Windows 10 上读取 Python 2.7 中的按键
【发布时间】: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


【解决方案1】:

感谢您的回复。事实证明,在 Windows 8.1 和 10 中,Ascii 值确实为 0。但是,Key Code 值为每个按下的键提供不同的数字,在字母的情况下与 Ascii 相同。 我设法改用它并成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2015-07-25
    • 2011-06-10
    • 1970-01-01
    • 2013-12-25
    • 2016-07-30
    相关资源
    最近更新 更多