python - 打开任务管理器后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 不会减慢应用程序的速度,但是当然,它可能会中断,然后只能重新启动该程序将修复它。
我已经尝试了很多东西,部分工作,重新导入模块效果很好,但我没有办法知道重新导入它的正确时间,我也可以以管理员身份运行程序,也解决了这个问题,但我不希望程序仅因为热键功能而以管理员身份运行。
解决方案
我进行了更多测试,并找到了答案(令人惊讶的是,在某处在线发布问题后回答自己的问题是多么容易)。
基本上我的程序没有管理员权限,因此在启动任务管理器时键盘模块会暂停,我知道它确实如此,但我认为它破坏了整个模块。实际发生的是,我通过按 ctrl shift esc 启动任务管理器,键在程序中注册,然后管理器启动,程序暂停,当我松开键时,程序不会注册。
因此,每当我按 alt + p 时,模块都会认为我在按 ctrl shift esc alt p。
要修复它,您只需按下所有三个键,但不要同时按下来刷新它。
我还没有尝试过,但我要做的就是让我的程序在任何键盘按下后清除所有键,这样热键仍然会起作用,在 ctrl shift esc 之后它会挂起,然后取消暂停并清除剩余的输入.
推荐阅读
- oracle - 我在 DBViewer 上找到了一个函数,但它在 PL/SQL 上不存在
- python - 从字符串中获取 postgresql 连接对象
- python - 如何修复“tf-nightly 2.7.0.dev20210912 需要 flatbuffers~=2.0,但你有不兼容的 flatbuffers 1.12。”
- c - Linux函数,为什么里面有数字?
- html - 根据引导程序 5 中的表数据编辑模式
- python - 无法使用 mlflow 记录管道对象
- nginx - Nginx 服务静态只响应索引
- javascript - 实施付费墙:为避免隐藏付费墙通知的问题,我应该在 HTML 中还是在 JSON-LD 中指定它?
- css - 源映射 CSS 文件的更改未显示在 Chrome 视口中
- sql-server - 使用一个查询更新一列中的多个字段