2010-12-08 5 views
2

Ich versuche, Maus Doppelklick mit pyHook zu bekommen, aber stattdessen bekomme ich zwei Paar Einträge von einzelnen Klicks, z. WM_LBUTTONDOWN (0x201) und WM_LBUTTONUP (0x202). Ich erwarte WM_LBUTTONDBLCLK (0x203). Was vermisse ich hier?Holen Sie Maus Doppelklick mit pyHook

import pythoncom, pyHook 

def OnMouseEvent(event):   
    print event.Message, event.Position 
    return True 

hm = pyHook.HookManager() 
hm.MouseAll = OnMouseEvent 
hm.HookMouse() 
pythoncom.PumpMessages() 

Ich habe diesen Hinweis gefunden: In this post MrZebra sagt: "Für diesen (0x203) gesendet wird, muss Ihre Fensterklasse mit dem CS_DBLCLKS Klasse Stil geschaffen werden"

bearbeiten: This page zeigt an, dass doubleclicking diese 4 msgs erzeugen wird: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_LBUTTONDBLCLK und WM_LBUTTONUP, aber ich bekomme tatsächlich die ersten beiden zweimal.

Ich verwende Python 2.7 und pyHook 1.5.1 auf Win7x64

reedit: Ich werde prüfen, wie Antworten C++/C# Tastatur/Maus-Alternativen Haken. Auf der anderen Seite bin ich nicht sicher, ob es üblich ist, Funktionen zu erstellen, um das Doppelklickereignis zu bestimmen, das die Zeit zwischen zwei Klicks auswertet.

+0

Versuchen Sie, nach der Anweisung 'hm = pyHook.HookManager()' '' hm.SubscribeMouseAllButtonsDbl (OnMouseEvent) 'hinzuzufügen. – martineau

+0

Ich habe die Änderungen vorgenommen, aber die Doppelklicks werden nicht angezeigt. Ich appreciate viel den Rat. –

Antwort

1

Der Grund, warum Sie zwei WM_LBUTTONDOWN und WM_LBUTTONUP und keine WM_LBUTTONDBLCLK bekommen ist, weil von dem, was MrZebra sagt: das Zielfenster Klasse Stil nicht CS_DBLCLKS Stil enthält. Sofern Sie den Quellcode für die Zielfensterklasse nicht ändern können, erhält er nie WM_LBUTTONDBLCLK, da Windows die Doppelklicks immer in zwei separate Klicks aufteilt.

Die einzige Möglichkeit, dies zu beheben, besteht darin, die Zeit zwischen den Klicks zu messen. Wenn die Klicks schnell genug sind, verhalten Sie sich so, als hätten Sie WM_LBUTTONDBLCLK erhalten. Siehe this zum Lesen der Doppelklickzeit unter Windows. Gehen Sie nicht einfach davon aus, dass Doppelklicks 50 ms oder was auch immer sind.

+0

Vielen Dank Herr Sigvardsson –

+0

Gern geschehen! –

Verwandte Themen