Hook鼠标点击并拦截它们

问题描述 投票:0回答:2

我目前正在尝试在脚本运行时停止鼠标单击并仍然使用它们。 如果您对用例感到困惑,我将在问题末尾详细说明。

目前我可以获得这样的点击:

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、无边框鼠标或共享鼠标)

python mouseevent
2个回答
0
投票

应用程序使用的钩子仅“钩”到进程中,这意味着它从中获取信息,但不能插入或修改其代码。

有关将使用的 Windows 的参考 (https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms644988(v=vs.85))

最简单的方法是让您的应用程序忽略鼠标点击。


0
投票

你可以使用 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”停止程序。

© www.soinside.com 2019 - 2024. All rights reserved.