首页 > 解决方案 > 打开任务管理器后keyboard.add_hotkey停止工作

问题描述

我正在使用python模块键盘创建一个热键,它的工作原理与它应该的一样,直到我打开任务管理器,之后热键停止工作,创建一个新的没有帮助,任务管理器后没有热键工作打开。

import keyboard

def hello():
    print('hello world!')

keyboard.add_hotkey('alt+p', hello, args=())

while True:
    pass

上面的代码只是一个复制问题的例子,我导入模块,创建一个热键,然后创建一个无限循环,这样程序就不会退出,并且热键你打开任务管理器之前一直有效。

为什么我需要使用 add_hotkey 而不是任何其他功能的原因是因为我打算将它用于更大的程序,并且 add_hotkey 不会减慢应用程序的速度,但是当然,它可能会中断,然后只能重新启动该程序将修复它。

我已经尝试了很多东西,部分工作,重新导入模块效果很好,但我没有办法知道重新导入它的正确时间,我也可以以管理员身份运行程序,也解决了这个问题,但我不希望程序仅因为热键功能而以管理员身份运行。

标签: pythonpython-3.xwindowskeyboardhotkeys

解决方案


我进行了更多测试,并找到了答案(令人惊讶的是,在某处在线发布问题后回答自己的问题是多么容易)。

基本上我的程序没有管理员权限,因此在启动任务管理器时键盘模块会暂停,我知道它确实如此,但我认为它破坏了整个模块。实际发生的是,我通过按 ctrl shift esc 启动任务管理器,键在程序中注册,然后管理器启动,程序暂停,当我松开键时,程序不会注册。

因此,每当我按 alt + p 时,模块都会认为我在按 ctrl shift esc alt p。

要修复它,您只需按下所有三个键,但不要同时按下来刷新它。

我还没有尝试过,但我要做的就是让我的程序在任何键盘按下后清除所有键,这样热键仍然会起作用,在 ctrl shift esc 之后它会挂起,然后取消暂停并清除剩余的输入.


推荐阅读