首页 > 解决方案 > 使用某些程序时,pynput 无法监听键盘输入

问题描述

当我使用 Chrome 时,pynput 工作得很好,它告诉我我按下了哪个键。但是当我使用其他一些程序,例如Taskmgr.exe,游戏时,它失败了!我应该怎么办?我的代码:

from pynput import keyboard

last_event_time=time.time()
def on_press(key):
    global last_event_time
    last_event_time=time.time()
    try:
        print('alphanumeric key {0} pressed'.format(
            key.char))
    except AttributeError:
        print('special key {0} pressed'.format(
            key))

def on_release(key):
    global last_event_time
    last_event_time=time.time()
    print('{0} released'.format(
        key))
    if key == keyboard.Key.esc:
        # Stop listener
        return False
listener2 = keyboard.Listener(
    on_press=on_press)
listener2.start()

标签: pythonpynput

解决方案


在找到原因之前,我在自己的代码中遇到了这个特殊问题一年。如果程序以提升的方式启动,则非提升程序(例如您的脚本)无法读取键盘。

如果让它工作很重要,我前一阵子敲了一些基本代码,以使用管理员权限重新启动我的脚本。该文件在这里,它的运行有点像这样:

if __name__ == '__main__':
    console.elevate(visible=not start_minimised)
    # Do your main code here

推荐阅读