【发布时间】:2010-12-08 18:18:51
【问题描述】:
我正在尝试使用 pyHook 获得鼠标双击,但我得到了两对单击条目,例如WM_LBUTTONDOWN (0x201) 和 WM_LBUTTONUP (0x202) 。我期待 WM_LBUTTONDBLCLK (0x203)。我在这里错过了什么?
import pythoncom, pyHook
def OnMouseEvent(event):
print event.Message, event.Position
return True
hm = pyHook.HookManager()
hm.MouseAll = OnMouseEvent
hm.HookMouse()
pythoncom.PumpMessages()
我发现了这个提示:在this post MrZebra 中说:“要发送这个 (0x203),您的窗口类需要使用 CS_DBLCLKS 类样式创建”
编辑:This page表示双击会产生这4条消息: WM_LBUTTONDOWN、WM_LBUTTONUP、WM_LBUTTONDBLCLK和WM_LBUTTONUP,但我实际上两次得到前两个。
我在 Win7x64 上使用 Python 2.7 和 pyHook 1.5.1
ReEdit:我会考虑 C++/C# 键盘/鼠标钩子替代方案作为答案。另一方面,我不确定构建函数来确定双击事件评估两次点击之间的时间是否是一种常见的做法。
【问题讨论】:
-
尝试在
hm = pyHook.HookManager()语句后添加hm.SubscribeMouseAllButtonsDbl(OnMouseEvent)。 -
我进行了更改,但双击不会显示。我非常感谢您的建议。