J'utilise teamplayer, qui vous permet de connecter plus de souris à votre ordinateur pour une utilisation simultanée. J'utilise aussi pyHook pour capturer les événements de la souris, avec le code suivant:teamplayer et pyhook interagissent étrangement
import pyHook
import pythoncom
def onclick(event):
# called when mouse events are received
print 'MessageName:',event.MessageName
print 'Message:',event.Message
print 'Time:',event.Time
print 'WindowName:',event.WindowName
print 'Position:',event.Position
print '---'
return True
hm = pyHook.HookManager()
hm.MouseLeftDown = onclick
hm.MouseLeftUp = onclick
hm.HookMouse()
pythoncom.PumpMessages()
Le code fonctionne très bien sans teamplayer - il détecte le bouton de la souris vers le bas et avec précision. Si je démarre teamplayer pendant que le programme est en cours d'exécution, alors il continue à bien fonctionner, cette fois en détectant les clics des deux souris avec précision.
Cependant, si je commence le programme après teamplayer est démarré, puis tous les mouseclick devient double:
MessageName: mouse left down
Message: 513
Time: 7231317
WindowName: None
Position: (673, 367)
---
MessageName: mouse left down
Message: 513
Time: 7231317
WindowName: None
Position: (673, 367)
---
MessageName: mouse left up
Message: 514
Time: 7231379
WindowName: None
Position: (673, 367)
---
MessageName: mouse left up
Message: 514
Time: 7231379
WindowName: None
Position: (673, 367)
Ce serait OK - je pourrais détecter les clics avec le même horodatage et ignorer le second. Cependant, lorsque je clique avec une autre souris, le modèle est étrange:
MessageName: mouse left down
Message: 513
Time: 7305916
WindowName: C:\Python25\python.exe
Position: (569, 306)
---
MessageName: mouse left down
Message: 513
Time: 7305916
WindowName: C:\Python25\python.exe
Position: (722, 365)
---
MessageName: mouse left up
Message: 514
Time: 7309598
WindowName: C:\Python25\python.exe
Position: (722, 365)
---
MessageName: mouse left up
Message: 514
Time: 7309598
WindowName: C:\Python25\python.exe
Position: (722, 365)
C'est le premier événement vers le bas utilise les coordonnées du dernier événement up! Le problème est aussi que le mauvais événement est le premier, rendant plus difficile de détecter le bon (je ne peux pas dire "ignorer le premier événement", car si le joueur d'équipe est éteint ou qu'une seule souris est connectée, c'est le seul!
Des idées sur les raisons pour lesquelles cela pourrait se produire et sur ce que je peux faire pour obtenir des événements de souris normaux?