gpt4 book ai didi

c# - 使用pyHook获取鼠标双击

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:35:58 26 4
gpt4 key购买 nike

我正在尝试使用 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# 键盘/鼠标钩子(Hook)替代方案作为答案。另一方面,我不确定构建函数来确定计算两次点击之间时间的双击事件是否是一种常见做法。

最佳答案

你得到两个 WM_LBUTTONDOWNWM_LBUTTONUP 而没有 WM_LBUTTONDBLCLK 的原因是因为 MrZebra 所说:目标窗口类的样式不包括 CS_DBLCLKS 样式。除非您可以修改目标窗口类的源代码,否则它永远不会收到 WM_LBUTTONDBLCLK,因为 Windows 总是会将双击分成两次单独的单击。

解决此问题的唯一方法是测量点击之间的时间。如果点击速度足够快,那么就好像您收到了 WM_LBUTTONDBLCLK 一样。参见 this用于读取 Windows 上的双击时间。不要只是假设双击是 50 毫秒或其他时间。

关于c# - 使用pyHook获取鼠标双击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4390845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com