簡體   English   中英

使用pyHook雙擊鼠標

[英]Get Mouse Double Click with pyHook

我正在嘗試通過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()

我發現了這個提示:在這篇帖子中 MrZebra說:“要發送此(0x203),您的窗口類需要使用CS_DBLCLKS類樣式創建”

編輯此頁面表明雙擊將生成以下4個消息:WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBLCLK和WM_LBUTTONUP,但實際上我得到了前兩次。

我在Win7x64上使用Python 2.7和pyHook 1.5.1

重新編輯 :我將以C ++ / C#鍵盤/鼠標鈎子替代品作為答案。 另一方面,我不確定是否通過構建函數來確定雙擊事件來評估兩次單擊之間的時間是否是常見的做法。

之所以得到兩個WM_LBUTTONDOWNWM_LBUTTONUP而沒有WM_LBUTTONDBLCLK是因為MrZebra所說:目標窗口類的樣式不包括CS_DBLCLKS樣式。 除非您可以修改目標窗口類的源代碼,否則它將永遠不會收到WM_LBUTTONDBLCLK ,因為Windows始終會將雙擊分為兩個單獨的單擊。

解決此問題的唯一方法是測量兩次點擊之間的時間。 如果點擊速度足夠快,則就像收到了WM_LBUTTONDBLCLK 請參閱此內容以了解Windows上的雙擊時間。 不要僅僅假設雙擊是50毫秒或任何其他時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM