Python keyboard.add_热键在打开taskmanager后停止工作
我正在使用python模块键盘创建一个热键,在我打开任务管理器之前,它的工作原理与预期的一样,在打开任务管理器之后,热键停止工作,创建一个新的热键没有任何帮助,任务管理器打开后,热键就不工作了Python keyboard.add_热键在打开taskmanager后停止工作,python,python-3.x,windows,keyboard,hotkeys,Python,Python 3.x,Windows,Keyboard,Hotkeys,我正在使用python模块键盘创建一个热键,在我打开任务管理器之前,它的工作原理与预期的一样,在打开任务管理器之后,热键停止工作,创建一个新的热键没有任何帮助,任务管理器打开后,热键就不工作了 import keyboard def hello(): print('hello world!') keyboard.add_hotkey('alt+p', hello, args=()) while True: pass 上面的代码只是一个复制问题的示例,我导入模块,创建一个热
import keyboard
def hello():
print('hello world!')
keyboard.add_hotkey('alt+p', hello, args=())
while True:
pass
上面的代码只是一个复制问题的示例,我导入模块,创建一个热键,然后创建一个无限while循环,这样程序就不会退出,热键会一直工作,直到打开任务管理器
我之所以需要使用add_热键而不是任何其他功能,是因为我将在一个更大的程序中使用它,add_热键不会减慢应用程序的速度,但当然,它可能会崩溃,然后只有重新启动程序才能修复它
我已经尝试了很多东西,部分奏效,重新导入模块效果很好,但是我没有办法知道重新导入模块的正确时间,我也可以作为管理员运行程序,这也解决了问题,但是我不希望程序仅仅因为热键功能而以管理员的身份运行。我正在运行一些测试,我找到了一个答案(在网上某个地方发布一个问题后,回答自己的问题是多么容易啊) 基本上,我的程序没有管理员权限,所以启动任务管理器时键盘模块会暂停,我知道它会暂停,但我认为它破坏了整个模块。实际发生的情况是,我通过按ctrl-shift-esc启动任务管理器,按键在程序中注册,然后管理器启动,程序暂停,当我松开按键时,程序不会注册 因此,每当我按下alt+p时,模块都认为我按下了ctrl-shift-esc-alt-p 要修复它,您只需按全部三个键,但不能同时刷新它
我还没有试过,但我要做的只是在任何键盘按下后让我的程序清除所有的键,这样热键仍能正常工作,在ctrl-shift-esc键后它会挂起,然后取消暂停并清除剩余的输入。我也遇到了同样的问题,所以很难受。 我终于找到了解决办法! 它使用的是“键盘.钩子键” 这是我的密码
import keyboard
temp = False
def switch(e):
global temp
if 'down' in e:
temp = True
else:
temp = False
def check(e):
global temp
if temp and 'down' in e:
print('It works!!')
keyboard.hook_key('alt', lambda e: switch(str(e)))
keyboard.hook_key('p', lambda e: check(str(e)))
keyboard.wait()
“hook_key”仅检测键盘上单个键的“Down”和“Up”事件,因此即使在任务管理器打开后,它也能正常工作