python - 如何使用Python检测鼠标侧按钮

标签 python pyhook

我一直在使用 pyhook 和点击事件的 message 属性,但它似乎只能检测到三个标准按钮。 其他人甚至没有到达处理程序。

有没有办法检测鼠标可能有的额外按钮?

最佳答案

WH_MOUSE_LL 确实会 Hook XButtons,并且 PyHook 的 dll 将其传递给 python,但 python 端的 HookManager 会忽略它们。但是,您可以跳过 HookManager 并直接使用 cpyHook 接口(interface)。

此示例在按下 xbutton 事件时将其打印到控制台,并在按下鼠标左键时退出:

from pyHook import cpyHook, HookConstants
import pythoncom
import ctypes
user32 = ctypes.windll.user32

XBUTTON1 = 0x0001
XBUTTON2 = 0x0002

wm = { 0x020B: "WM_XBUTTONDOWN", 0x020C: "WM_XBUTTONUP", 0x0201: "WM_LBUTTONDOWN", }

def mouse_handler(msg, x, y, data, flags, time, hwnd, window_name):
    name = wm.get(msg, None)
    if name:
        xb = data >> 16  # high word indicates which xbutton
        print(name, xb & XBUTTON1, xb & XBUTTON2)
        if name == "WM_LBUTTONDOWN":
            user32.PostQuitMessage(0)
    return True  # True = pass the event to other handlers

try:
    cpyHook.cSetHook(HookConstants.WH_MOUSE_LL, mouse_handler)
    pythoncom.PumpMessages() # returns on WM_QUIT
finally:
    cpyHook.cUnhook(HookConstants.WH_MOUSE_LL)

关于python - 如何使用Python检测鼠标侧按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12428351/

相关文章:

python - 如何使用 pyHook 捕获 Shift + PrintScreen?

python - 无法安装pyhook和pywin32

python 中的 pythoncom.Pumpmessages

python - 实例启动后,aws-python 中的任何事件监听器

c++ - 使用 boost 和 python 绑定(bind)在 osx 上构建 32 位版本的 libtorrent

python - 如何在 MayaVi 中绘制正确的 3D 轴,就像在 Matplotlib 中找到的那样

python - 使用 Pandas 扩展时间序列事件

python - Python 3.6 的 PyHook

python - 使用pyw文件的Windows启动不会关闭cmd

python - 自动构建可执行文件