如何收听特定 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),我发现该模块似乎没有实现按键监听器。
但是,您的问题的可能解决方案是使用 win32gui 和 pynput 模块,如下所示:
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
# ...
我只想打印在“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),我发现该模块似乎没有实现按键监听器。
但是,您的问题的可能解决方案是使用 win32gui 和 pynput 模块,如下所示:
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
# ...