我目前正在尝试在脚本运行时停止鼠标单击并仍然使用它们。 如果您对用例感到困惑,我将在问题末尾详细说明。
目前我可以获得这样的点击:
import mouse
import time
def mouseHook(event):
if type(event) == mouse.ButtonEvent:
print(event)
mouse.hook(mouseHook)
while 1:
time.sleep(0.25)
但这仍然让点击通过,我该如何拦截它们?
用例:模拟显示器,当鼠标位于该显示器上时,将所有移动、点击和按键发送到 MacBook(类似于 Synergy、无边框鼠标或共享鼠标)
应用程序使用的钩子仅“钩”到进程中,这意味着它从中获取信息,但不能插入或修改其代码。
有关将使用的 Windows 的参考 (https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms644988(v=vs.85))
最简单的方法是让您的应用程序忽略鼠标点击。
你可以使用 pynput 在鼠标上创建一个钩子,然后我们就可以像这样阻止鼠标的所有移动
import pynput, keyboard
# Disable mouse
mouse_listener = pynput.mouse.Listener(suppress=True)
mouse_listener.start()
# Re-Enable mouse
mouse_listener.stop()
为了拦截压力,我们使用这个:
#https://stackoverflow.com/questions/7529991/disable-or-lock-mouse-and-keyboard-in-python
import pynput, keyboard
def onMove(x, y, mouse:pynput.mouse.Button, pressed):
print(x, y, mouse.name, pressed)
# Disable mouse and keyboard events
mouse_listener = pynput.mouse.Listener(on_click=onMove, suppress=True)
mouse_listener.start()
# Enable mouse and keyboard events
while True:
if keyboard.is_pressed('q'):
mouse_listener.stop()
break
请注意 运行时,它将抑制所有鼠标事件,您将无法使用它,因此要退出,请按“q”停止程序。