python - 使用某些程序时,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()
解决方案
在找到原因之前,我在自己的代码中遇到了这个特殊问题一年。如果程序以提升的方式启动,则非提升程序(例如您的脚本)无法读取键盘。
如果让它工作很重要,我前一阵子敲了一些基本代码,以使用管理员权限重新启动我的脚本。该文件在这里,它的运行有点像这样:
if __name__ == '__main__':
console.elevate(visible=not start_minimised)
# Do your main code here
推荐阅读
- windows - 使用特定 dll 查找和终止进程的脚本方法
- javascript - 递归单击同一元素的问题
- excel - 如何使图表轴编号格式与数据集编号格式匹配
- r - plotly 热图切割 y 轴名称
- flutter - Flutter:BLoC 包 - bloc 提供者
- python - 用熊猫改变一行的值
- javascript - 使用 package.json 脚本运行另一个 package.json 脚本
- protocol-buffers - protoc 在 proto_path 中找不到东西
- php - Laravel Eloquent 查询限制和偏移量被自动添加到计数查询中
- reactjs - 如何在 React 中突出显示选定的按钮?