如何收听特定 window 的按键

How to listen to pressed keys of a specific window

我只想打印在“Google Chrome”中按下的键。我搜索了很多没有找到任何东西。需要示例代码或 smthg

请看我的代码:

import win32com.client as comctl
wsh = comctl.Dispatch("WScript.Shell")
wsh.AppActivate("Youtube - Google Chrome") # Google Chrome window title
wsh.SendKeys("{O}")
print(akeyhasbeenpressed) # :/

确实是个很有趣的问题。

我已经阅读了 win32com 文档 (http://timgolden.me.uk/pywin32-docs/html/com/win32com/HTML/QuickStartClientCom.html#Using),我发现该模块似乎没有实现按键监听器。

但是,您的问题的可能解决方案是使用 win32guipynput 模块,如下所示:

import win32gui
from pynput import keyboard

def on_press(key):
     try: key_pressed = key.char # single-char keys
     except: key_pressed = key.name # other keys
     print(key_pressed)
     active_window = win32gui.GetWindowText(win32gui.GetForegroundWindow())
     print(active_window)
      
listener = keyboard.Listener(on_press=on_press)
listener.start() 
listener.join() 

键盘侦听器处理按键事件,而 win32gui 在按键时为您提供活动的 window 名称。

当然,您随后可以轻松地按您感兴趣的 window 进行筛选:

def on_press(key):
 try: key_pressed = key.char # single-char keys
 except: key_pressed = key.name # other keys
 active_window = win32gui.GetWindowText(win32gui.GetForegroundWindow())
 if active_window == "Youtube - Google Chrome":
      # ... 
      # do something
      # ...